【发布时间】:2013-05-06 17:13:52
【问题描述】:
据我了解,创建功能分支的优点之一是您可以轻松查看大量提交已合并到开发分支的位置。
在完成功能分支后,建议删除功能分支,因为开发不再需要它。删除分支后,图表是否仍会被注释为“feature/my-fancy-feature”分支并合并?
【问题讨论】:
标签: git version-control git-flow atlassian-sourcetree
据我了解,创建功能分支的优点之一是您可以轻松查看大量提交已合并到开发分支的位置。
在完成功能分支后,建议删除功能分支,因为开发不再需要它。删除分支后,图表是否仍会被注释为“feature/my-fancy-feature”分支并合并?
【问题讨论】:
标签: git version-control git-flow atlassian-sourcetree
“在完成一个特性分支后,建议删除 功能分支,因为开发不再需要它。”
“Finishing”在这里是一个模棱两可的表达。为确保我完全涵盖您的问题,我相信您指的是以下任一情况:
(1) 如果您希望丢弃feature/my-fancy-feature:
git branch -d feature/my-fancy-feature
(2) 如果您打算合并 feature/my-fancy-feature:
git flow feature finish my-fancy-feature
"一旦分支被删除,图表是否仍会被注释 “feature/my-fancy-feature”分支合并了?”
取决于(结果不依赖于git-flow)。 git log 不会给你具体的分支名称(例如feature/my-fancy-feature)。它只会为您提供带有消息的提交历史记录。回顾快进合并和非快进合并的区别:
fast-forward-merge(feature/my-fancy-feature 中的所有提交历史记录将保留):
git merge
non-fast-forward-merge(feature/my-fancy-feature 中的所有提交历史都将消失):
git merge --no-ff
请参考以下来自 Vincent Driessen 的 article 的插图:
要在 SourceTree 中启用非快进功能,检查从Menubar-> SourceTree -> Preferences -> Git找到的以下全局首选项:
为了进一步解释,我从 SourceTree 的“帮助中心”中找到了这段摘录:
在以下情况下禁用快进行为 合并,意味着始终创建显式合并提交 不管接收分支是否有其他变化。 如果您想维护一个明确的单独行,这可能很有用 在所有情况下的发展。
希望对您有所帮助!
【讨论】:
git flow feature finish my-fancy-feature。 GUI 似乎没有提供指定 --no-ff 的选项。但是,话虽如此,我相信提交历史比查看提交来自哪个分支更重要。我最初的印象是,使用功能分支的好处之一是,即使在完成功能后,您也可以看到图表。
--no-ff。请参考我上面的更新答案。如果您按照我更新的答案中所述取消选中 --no-ff 选项(默认情况下未选中),则图表将保留。
git branch -d feature/my-fancy-feature。如果分支没有合并到任何东西,它会坚持你使用大写 D。 git branch -D feature/my-fancy-feature ... 我要吃饼干吗?
不,只保留提交消息;如果要保留分支的名称,请确保将其包含在合并提交中或使用相关名称显式标记合并提交。
您最好不要担心在提交消息之外保留这些数据;当你合并你的特性分支时,你不应该关心工作是在特性分支上完成的。
【讨论】: