假设如下分支:a->b->c->d->e->f->g
我已经通过git
确定commit c引入了一个bug,但是恢复c在分支顶部引入的更改并不能解决这个问题。这向我表明,在以后对该分支的提交中还有其他错误。
有没有一种方法来合成以下分支:A->B-> D1-> E1-> F1-> G1,其中1表示在提交C中引入的更改不存在?然后我会在那个分支上运行git bisect
,以确定找到另一个bug。[希望这不需要重复多次]
最佳答案
对:
git checkout -b newbranch <specifier-for-B>
git cherry-pick <specifier-for-C>..<specifier-for-G>
这些
<specifier>
s可以是原始散列ID,或分支名称,或带有~number
的分支名称以倒数第一次提交,等等。诀窍是创建一个以最后一次良好提交结束的新分支,然后在除了已知的坏提交之外的其他可能良好的提交中选择cherry-pick。一旦您有了这个新分支,您可以使用
number
或git rebase -i
删除更多提交(如果您愿意)。关于git - 我可以在git中综合跳过一个变更集的分支吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45600375/