选择要与 master 合并的提交
Picking the commits to merge with master
假设我的 master 分支中有一个 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"
Bug 终于修复了。
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
并且只有 select 第二次提交(即错误修复),但是我遇到了这个冲突:
def foo(x):
<<<<<<< HEAD
=======
print x
if x == 0:
return None
>>>>>>> 62beaa8... fixed
return 1/x
有没有办法让 git 获得正确的版本,而无需我手动删除所有调试打印语句?
你的 checkout 和 rebase 目标应该反过来。 rebase 命令可以用措辞表达 "unwind from my current position up to the commit specified".
此外,由于您已经在 feature/bugfix 分支上,您可以忽略结帐,而只是
git rebase -i master
和 pick/squash/fixup 所需的提交。完成后您可以合并:
git checkout master
git merge bug
如果您希望将分支保留在 git 树中,您可以合并特定的合并提交(而不是快进):
git merge --no-ff bug
假设我的 master 分支中有一个 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"
Bug 终于修复了。
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
并且只有 select 第二次提交(即错误修复),但是我遇到了这个冲突:
def foo(x):
<<<<<<< HEAD
=======
print x
if x == 0:
return None
>>>>>>> 62beaa8... fixed
return 1/x
有没有办法让 git 获得正确的版本,而无需我手动删除所有调试打印语句?
你的 checkout 和 rebase 目标应该反过来。 rebase 命令可以用措辞表达 "unwind from my current position up to the commit specified".
此外,由于您已经在 feature/bugfix 分支上,您可以忽略结帐,而只是
git rebase -i master
和 pick/squash/fixup 所需的提交。完成后您可以合并:
git checkout master
git merge bug
如果您希望将分支保留在 git 树中,您可以合并特定的合并提交(而不是快进):
git merge --no-ff bug