选择提交与master合并

时间:2016-11-17 14:33:19

标签: git rebase

说我的主分支中有一个错误的功能:

def foo(x):
   return 1/x
git commit -a -m "foo is created"

我创建了一个名为bug的新分支来调试它。

git checkout -b bug

我创建了一些用于调试的print语句,并提交:

def foo(x):
    print x
    return 1/x
git commit -a -m "print statements are added for debugging"

最后修复了错误。

def foo(x):
    print x
    if x == 0:
       return None
    return 1/x
git commit -a -m "foo bug is fixed"

现在我想用bug来修改master分支上的第二次提交,但我不想添加print语句(即第一次提交),所以我使用交互式rebase如下:

git rebase -i master

drop b2296f0 printing
pick 62beaa8 fixed

并且只选择第二次提交(即bugfix),但是我遇到了这个冲突:

def foo(x):
<<<<<<< HEAD
=======
    print x
    if x == 0:
        return None
>>>>>>> 62beaa8... fixed
    return 1/x

有没有办法让git获得正确的版本,而不是我手动删除所有调试打印语句?

1 个答案:

答案 0 :(得分:3)

您的结帐和rebase目标应该是相反的方式。 rebase命令可以用“从我当前位置解除到指定提交的效果”的措辞来表达。

此外,由于您已经在功能/错误修复分支上,您可以忽略结帐,而只是做

git rebase -i master

并选择/压缩/修复所需的提交。完成后,您可以合并:

git checkout master git merge bug

如果您想要在git树中保留分支,您可以合并特定的合并提交(而不是快进):

git merge --no-ff bug