我应该将master合并到一个分支中,然后合并回master吗?

时间:2015-04-21 13:18:51

标签: git branch git-merge

我有以下分支:

  • master
  • test1,由master
  • 创建
  • test2,也是由master
  • 创建的

我已经在test1分支上完成了多次提交,而且,由于我创建了test1分支,因此我在master上创建了多次提交。

还有test2上的提交,我打算稍后将其合并回master

现在的想法是,我需要master的更改,如果可能的话,我需要test2 test1上的更改。

我想知道我是否可以将master合并到TEST1,因此我从master test获取提交,并在test1完成我的功能后master 1}},再次合并到test2。那可能吗?或者会引发冲突?

是否可以将test1合并到test2,然后将test1合并到master中,最后将master合并到{{1}}?

Git会理解某些提交已经合并到正在合并的分支中吗?

2 个答案:

答案 0 :(得分:12)

  

我想知道我是否可以将MASTER合并到TEST1中,所以我在测试时获得了master的提交,在test1上完成我的功能后,再次将它合并到MASTER。那可能吗?或者它会引发冲突?

究竟是怎么做的。将master合并到test1时可能会遇到冲突,您必须手动解析。之后,您应该能够将test1合并到master中而不会发生冲突。

  

如果可能的话,可以将test2合并到test1中,然后将test2合并到master中,然后将test1合并到master中吗?

有可能,但不可取。而是将master合并到test2中,然后将test2合并回master。 (与test1相同。)

在此之后,您的所有更改都应该在主人身上。

  

git是否会理解某些提交已经合并到正在合并的分支中?

是的,与SVN不同,Git知道这样的提交。

答案 1 :(得分:6)

要合并时始终保持最新并且不会产生任何冲突,您可以执行以下操作:

git checkout test1
git rebase master

此时,您将与master保持同步,并在test1上提交您的提交。

rebase会执行以下操作:

  • 在与master不同的点之后选择test1上的所有提交并放入临时区域。
  • 在与test1不同的点之后从master中选择所有提交并将它们带到test1。此时两个分支都是最新的。
  • 然后它将从临时区域中获取test1提交并将其应用于test1之上。此时test1将与master保持同步并将其提交置于最佳状态。 当它发生时,任何可能存在的冲突都会出现,你可以解决它们。

在此之后,合并回主人将是一个快进。

git checkout master
git merge test1

我喜欢这种方法如下:

  • 很简单。
  • 轻松掌握分支机构的最新信息。
  • 消除合并提交,因为冲突在rebase时解决。

我已经应用了很长一段时间了,它似乎适合你想要完成的任务。