二进制搜索(git bisect)
git bisect
允许你使用二进制搜索找到引入错误的提交。
首先,通过提供两个提交引用来平分会话:错误之前的良好提交,以及错误之后的错误提交。通常,糟糕的提交是 HEAD
。
# start the git bisect session
$ git bisect start
# give a commit where the bug doesn't exist
$ git bisect good 49c747d
# give a commit where the bug exist
$ git bisect bad HEAD
git
启动二进制搜索:它将修订版拆分为一半并将存储库切换到中间版本。检查代码以确定修订是好还是坏:
# tell git the revision is good,
# which means it doesn't contain the bug
$ git bisect good
# if the revision contains the bug,
# then tell git it's bad
$ git bisect bad
git
将继续根据你的指示对每个剩余的错误修订子集运行二进制搜索。git
将提供单个修订版,除非你的标记不正确,否则将完全代表引入错误的修订版。
之后记得运行 git bisect reset
来结束 bisect 会话并返回 HEAD。
$ git bisect reset
如果你有可以检查错误的脚本,则可以使用以下命令自动执行该过程:
$ git bisect run [script] [arguments]
其中 [script]
是脚本的路径,[arguments]
是应该传递给脚本的任何参数。
运行此命令将自动运行二进制搜索,在每一步执行 git bisect good
或 git bisect bad
,具体取决于脚本的退出代码。退出 0 表示 good
,而退出 1-124,126 或 127 表示不良。125 表示脚本无法测试该修订版(这将触发 git bisect skip
)。