【问题标题】:Finishing a feature branch with GIT Flow使用 GIT Flow 完成功能分支
【发布时间】:2013-05-06 17:13:52
【问题描述】:

据我了解,创建功能分支的优点之一是您可以轻松查看大量提交已合并到开发分支的位置。

在完成功能分支后,建议删除功能分支,因为开发不再需要它。删除分支后,图表是否仍会被注释为“feature/my-fancy-feature”分支并合并?

【问题讨论】:

    标签: git version-control git-flow atlassian-sourcetree


    【解决方案1】:

    “在完成一个特性分支后,建议删除 功能分支,因为开发不再需要它。”

    “丢弃”和“合并”特性分支的区别:

    “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-mergefeature/my-fancy-feature 中的所有提交历史记录将保留):

    git merge
    

    non-fast-forward-mergefeature/my-fancy-feature 中的所有提交历史都将消失):

    git merge --no-ff
    

    请参考以下来自 Vincent Driessen 的 article 的插图:

    更新

    要在 SourceTree 中启用非快进功能,检查Menubar-> SourceTree -> Preferences -> Git找到的以下全局首选项:

    为了进一步解释,我从 SourceTree 的“帮助中心”中找到了这段摘录:

    在以下情况下禁用快进行为 合并,意味着始终创建显式合并提交 不管接收分支是否有其他变化。 如果您想维护一个明确的单独行,这可能很有用 在所有情况下的发展。

    希望对您有所帮助!

    【讨论】:

    • 在 SourceTree 中,我选择了“完成功能”,我相信它相当于 git flow feature finish my-fancy-feature。 GUI 似乎没有提供指定 --no-ff 的选项。但是,话虽如此,我相信提交历史比查看提交来自哪个分支更重要。我最初的印象是,使用功能分支的好处之一是,即使在完成功能后,您也可以看到图表。
    • @LeaHayes SourceTree 确实支持--no-ff。请参考我上面的更新答案。如果您按照我更新的答案中所述取消选中 --no-ff 选项(默认情况下未选中),则图表将保留。
    • 我想这一定是 Windows 版本的 SourceTree 的限制。 Git Flow:完成功能: pbrd.co/18rHnsS Merge: pbrd.co/18rHuF2 看起来他们为“合并”添加了相反的选项,但看起来不像这样是 Git Flow 的一部分。
    • git 确实喜欢“丢弃”git branch -d feature/my-fancy-feature。如果分支没有合并到任何东西,它会坚持你使用大写 D。 git branch -D feature/my-fancy-feature ... 我要吃饼干吗?
    • 我会指出 SourceTree 存在的一个潜在问题,如果不是其他 Git Flow 客户端的话...具有两个或多个提交的功能分支将根据左侧的图表显示(git merge --no-ff),但只有一次提交的功能分支将根据右侧的图表出现(git merge plain)。查找历史记录非常烦人,尤其是在尝试按功能分支名称搜索时。
    【解决方案2】:

    不,只保留提交消息;如果要保留分支的名称,请确保将其包含在合并提交中或使用相关名称显式标记合并提交。

    您最好不要担心在提交消息之外保留这些数据;当你合并你的特性分支时,你不应该关心工作是在特性分支上完成的。

    【讨论】:

    • 我选择了默认选项,尽管功能分支不再存在,但它似乎保留了图表。显然,分支的名称已被删除,但视觉表示仍然存在。我对此很满意,因为提交是按逻辑分组的。就像你说的,我可以明确地标记合并提交。我会为此使用轻量级标签吗?
    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 2011-09-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2014-07-01
    • 2015-10-26
    • 2012-05-08
    相关资源
    最近更新 更多