如何将包含已还原提交的主服务器合并到分支

时间:2013-12-11 09:50:37

标签: git merge-conflict-resolution git-revert

我有一个初始状态的主分支:

touch file
git add file
git commit -m "initial"

然后我做了一些改变:

echo "123" >> file
git commit -am "feature1"

它真正属于一个功能分支,所以我分支:

git branch TEST

并且恢复了主人的变化(我不知道这是否是最好的方法,但它确实做了当时需要的事情):

git revert <last commit hash>

然后我对功能分支做了一些更改:

git checkout TEST
echo "456" >> file
git commit -am "feature 1 continued"

现在我有问题将主人合并到它。我想要的是能够将master中所有未来的更改合并到TEST分支并保持我的功能分支更改。

代码已被推送到遥控器。

1 个答案:

答案 0 :(得分:4)

还原还原

为了能够合并TEST分支,您需要恢复还原,以便可以干净地应用TEST历史记录。

即。而最初的主分支历史是:

$ git checkout master
$ git log --oneline
yyyyyyy Revert "wanted change"
xxxxxxx wanted change
....

TEST分支历史记录是:

$ git checkout TEST
$ git log --oneline
aaaaaaa Test development commits
xxxxxxx wanted change
....

您需要的是实现这一目标:

$ git checkout TEST
$ git log --oneline
aaaaaaa Test development commits
zzzzzzz Revert "Revert "wanted change"" # <-
yyyyyyy Revert "wanted change"
xxxxxxx wanted change
....

即。 xxxxxxxzzzzzzz的结帐将完全相同。

使用中间分支

要做到这一点,一个相对简单的方法是使用中间分支:

$ git checkout master
$ git checkout -b merge-resolution
$ git revert yyyyyyy
$ git merge TEST

然后将该分支与master合并:

$ git checkout master
$ git merge merge-resolution
$ git branch -d merge-resolution

这应该会在master中产生干净/一致的历史记录,并且干净地应用TEST的更改。