我有一个初始状态的主分支:
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分支并保持我的功能分支更改。
代码已被推送到遥控器。
答案 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
....
即。 xxxxxxx
和zzzzzzz
的结帐将完全相同。
要做到这一点,一个相对简单的方法是使用中间分支:
$ 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
的更改。