如何在功能发生故障时搜索旧的git提交

kon*_*tur 2 git git-checkout

在追踪某个功能时,我确定了一个功能仍然有效的过去提交waaay.现在我想逐步检查更新的提交以查看功能何时崩溃,而不必通过哈希识别它们,而是相对于我识别的哈希(功能仍然有效).

有没有办法做这样的事情:

git checkout "COMMITHASH + X COMMITS NEWER (closer to master)"
Run Code Online (Sandbox Code Playgroud)

或签出提交后:

git checkout "X COMMITS NEWER (closer to master)"
Run Code Online (Sandbox Code Playgroud)

该问题的其他解决方案也受到欢迎,但我仍然想知道是否存在类似我上面的伪语句的语法,类似于HASH~1反向的语法.

MrT*_*Tux 8

正是对于这个用例,有一个使用二进制搜索的git bisect功能.

请参阅https://www.kernel.org/pub/software/scm/git/docs/git-bisect.html

使用方法如下:

  1. git bisect start 开始二等分
  2. git bisect bad 将HEAD标记为坏
  3. git bisect good HASH标记提交HASH为最后一次已知的良好提交(也可以是git引用),例如以前的版本

然后,bisect将检查最后一次已知良好提交和最后一次已知错误提交之间的中间提交.在这里做你的测试.

根据您的结果问题git bisect goodgit bisect badgit将继续,直到找到它的错误提交.

停止二等分问题 git bisect reset

(如果您有子模块,则可能必须在每个步骤后更新它们).