如何解决我想在本地测试的5个PR,对git命令感到困惑
3个月前,有5个PR被合并到我们的存储库中。
这些PR之一引起了问题。
我希望回溯到合并每个PR的时间,在本地进行测试,并将问题归结为一个有问题的PR。我不想承诺要掌握任何东西。
所以我打算去每个PR,找到最终的SHA,然后运行:
git checkout <SHA> #checks out/downloads all work up to commit id,discards any commits made after this date locally
git checkout -b bugIsolation
我希望这项工作能/是否有一种更清洁或更佳的方法来实现?
解决方法
我想说git bisect
是您要寻找的工具。您所描述的事情会稍有不同。该命令使用二进制搜索来查找引入该错误的提交,而不是像您描述的那样手动多次检出内容:
git bisect start
git bisect good <good revision>
git bisect bad <bad revision>
在这些命令之后,git
会告诉您一些内容:
Bisecting: N revisions left to test after this (roughly M steps)
[d4a69a45398cf729c089087030da7d7a7a088802] <commit message>
Git将自动检出<bad revision>
和<good revision>
之间的“中间”提交。现在该轮到您检查当前修订版是否有效了。
当您发现当前版本不正确时,您将使用git bisect bad
告诉git。如果当前版本良好,则使用git bisect good
。重复这种行为,直到您发现一个引入该错误的提交为止。
还有一个选项可以使检查过程自动化-git bisect run
就是为此目的。
完成后,您发现正在使用git bisect reset
的错误提交,这将签出从等分开始的修订。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。