【问题标题】:Git branches for working on dev while merging some changes into the masterGit 分支,用于在将一些更改合并到 master 时在 dev 上工作
【发布时间】:2011-04-04 18:32:26
【问题描述】:

以前,使用 SVN,我将有一个分支作为我的开发分支,它与开发站点上的代码相匹配。偶尔,我会在开发分支中进行更改,然后将更改合并到主干中,以便将其投入生产。我想知道如何用 git 完成类似的事情。

基本上,我希望能够将分支中的 1 个或几个提交合并到主分支中,而无需合并整个分支。

或者我应该以不同的方式使用 git 吗? (我需要立即发布更改,所以在所有更改完成之前我无法做到。)我应该使用多个分支吗?我可以将 1 个分支合并到多个其他分支吗?

【问题讨论】:

    标签: git


    【解决方案1】:

    您几乎已经回答了您的问题:是的,您可以将一个分支合并到多个其他分支中。

    因此,您要做的是仅为此功能/错误修复创建一个分支(通用名称为“主题”),从您希望将其合并到的所有分支的共同祖先开始。完成你的工作,提交它,然后将它合并到所有这些中。

    # say version 1.2.3 is a common ancestor, and it's tagged
    git checkout -b bugfix v1.2.3
    
    # do some stuff
    git add ...
    git commit
    
    git checkout master
    git merge bugfix
    
    git checkout dev
    git merge bugfix
    ...
    

    这里的关键部分是确保你的分支从一个共同的祖先开始。如果你不这样做,你最终也会合并其他东西。

    如果由于某种原因很难找到一个好的共同祖先,您可以退回到cherry-picking。这实质上是将提交从一个地方复制到另一个地方。但是,最好尽可能避免它,因为这确实意味着您最终会在历史记录中获得两个提交副本。

    【讨论】:

      【解决方案2】:

      我更喜欢在 git 中创建“主题分支”,在它自己的分支中实现一个功能。然后我可以选择是否将其合并到开发或生产中或两者兼而有之。这样可以继续进行功能开发,同时仍然可以在合理的时间内将错误修复应用于生产。

      其概念与此处解释的模型相似:http://nvie.com/posts/a-successful-git-branching-model/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-30
        • 2011-01-20
        • 1970-01-01
        • 2013-01-14
        • 2016-09-20
        • 2014-11-19
        • 1970-01-01
        相关资源
        最近更新 更多