git - 暂时将其他分支合并到我当前的分支中

时间:2015-04-16 16:23:13

标签: git git-merge

我有一个情况。我们假设两位开发人员正在开发两个不同的分支AB

 -- master --
|            |
A     <--    B  

分支B取决于A的变化。但是,A中的更改尚未合并到master中。我想开始使用B中的更改来处理我的功能(分支A),然后在完成测试后丢弃它们。推荐的方式是什么?

2 个答案:

答案 0 :(得分:2)

我们假设分支B当前处于提交abc1234。您问题的最直接答案是

git checkout B
git merge A
# run your tests
git reset --hard abc1234

但正如其他人所说,这是一个非常奇怪的工作流程。如果B依赖于A,你为什么要首先取消分支?也许你想要第三次整合&#34;而不是分支?

答案 1 :(得分:0)

有两种有效的方法可以解决这个问题:

  1. 您执行完整,正常的合并。这是最简单的方法,git并不关心你来回合并多少次,它可以解决它。这种方法是最诚实的方法:您的更改取决于在另一个分支中完成的操作,以便在记录的历史记录中反映出来。

    此方法的唯一问题是人们(可能具有SVN或类似背景)想要在master上保留线性历史记录,或者包含官方发展历史记录的SVN存储库。

    < / LI>
  2. 您将工作重新定位到另一个分支。有些人喜欢这样,因为它保留了线性历史记录,并且更容易与上游SVN存储库进行交互。不利的一面是,你是在撒谎关于历史(请参阅我的answer到另一个问题,了解有关为什么会出现问题的详细信息)。所以,如果你选择rebase,你应该确保至少编译测试你的新提交。

    这种方法的另一个缺点是,每当您需要绘制另一个分支(包括主分支)中的更改以保留线性历史记录时,您将需要重新设置整个工作。并重复测试新rebase创建的所有新提交。

    这就是我非常喜欢合并方法的原因:它允许在任何时候进行合并,并且需要测试的唯一新提交是合并提交。我以前的所有提交都保持不变,不需要重新测试。