git - 我可以在 git 中合成一个跳过单个更改集的分支吗

标签 git testing git-bisect

假设以下 git 分支:A -> B -> C -> D -> E -> F -> G

我已经通过 git bisect 确定提交 C 引入了一个错误,但是恢复 C 在分支顶部引入的更改并不能解决问题。这向我表明,在该分支的后续提交中还有其他错误。

有没有办法合成以下分支: A -> B -> D1 -> E1 -> F1 -> G1 ,其中 1 表示提交 C 中引入的更改不存在?然后,我还会在该分支上运行 git bisect 以确定是否找到其他错误。 [希望这不需要重复多次]

最佳答案

是的:

git checkout -b newbranch <specifier-for-B>
git cherry-pick <specifier-for-C>..<specifier-for-G>

这些 <specifier> s 可以是原始哈希 ID,或分支名称,或带有 ~<em>number</em> 的分支名称倒数 number 第一次提交,等等。诀窍是创建一个新分支,在最后一个好的提交处结束,然后在除已知的错误提交之外的其余可能好的提交中挑选。

一旦有了这个新分支,就可以使用 git rebase -igit rebase --onto <target> <exclude>如果愿意,可以删除更多提交。

关于git - 我可以在 git 中合成一个跳过单个更改集的分支吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45600375/

相关文章:

Git 提交提交暂存和未暂存文件

testing - 错误 : <spyOn> : fetch() method does not exist in PhantomJS

Java 在测试期间重复

python - git-bisect,但对于 N 个 repo

git - 如何中止 Git Bisect

Eclipse git 和 ssh-agent

ruby - 使用 ruby​​ 在 git 中 checkout 标签?

Git LFS 不工作

java - 没有找到类 “java.util.concurrent.CompletableFuture”

git - 在二等分之前将工作树更改为特定提交的最佳方法是什么?