Git 选择要与主服务器合并的提交

Git 选择要与主服务器合并的提交,git,rebase,Git,Rebase,假设我的主分支中有一个buggy函数: def foo(x): return 1/x git commit -a -m "foo is created" 我创建了一个名为bug的新分支来调试它 git checkout -b bug 我创建了一些用于调试的打印语句,并提交: def foo(x): print x return 1/x git commit -a -m "print statements are added for debugging" 最后,这个错误

假设我的主分支中有一个buggy函数:

def foo(x):
   return 1/x
git commit -a -m "foo is created"
我创建了一个名为
bug
的新分支来调试它

git checkout -b bug
我创建了一些用于调试的打印语句,并提交:

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"
现在,我想使用
master
重新设置
bug
分支上第二次提交的基础,但我不想添加打印语句(即第一次提交),因此我使用交互式重新基础,如下所示:

git rebase -i master

drop b2296f0 printing
pick 62beaa8 fixed
并且只选择第二次提交(即错误修复),但是我会遇到以下冲突:

def foo(x):
<<<<<<< HEAD
=======
    print x
    if x == 0:
        return None
>>>>>>> 62beaa8... fixed
    return 1/x
def foo(x):
>62beaa8。。。固定的
返回1/x

有没有一种方法可以让git获得正确的版本,而不用我手动删除所有调试打印语句?

您的签出和重定基础目标应该是另一种方法。rebase命令可以用“从我的当前位置到指定的提交位置”这样的措辞来表达

此外,由于您已经在feature/bugfix分支上,您可以忽略签出,而只需这样做

git-rebase-i-master

并拾取/挤压/修复所需的提交。完成后,您可以合并到:

git签出主机
git合并错误

相反,如果您希望在git树中保留分支,则可以使用特定的合并提交进行合并(而不是进行快进):


git merge——没有ff bug

git cherry pick
你需要cherry pick它,而不是rebaseit@Liam我认为交互式重基的用例是挑选并选择提交?不,那是樱桃挑选…:)我在尝试重新设置基址时遇到了这种冲突:
def foo(x):>62beaa8。。。fixed return 1/x
我希望git删除打印语句并应用错误修复。我编辑了问题。我选择选择选择修复错误并删除打印语句。