我该如何解释这个git bisect输出?

4

我使用了 git bisect 命令来查找代码中的错误:

Frank:wdi user$ git bisect good 36c1756119c19d4773d008a7ba944f8a9cb35a18
9095710f3e59feb7ad2c8609f4877998e0b5c07c is the first bad commit
commit 9095710f3e59feb7ad2c8609f4877998e0b5c07c
Author: Eric Baldwin <email address>
Date:   Wed Aug 14 12:10:08 2013 -0400

    Commit message

:100755 100755 3502c3b66f26ed6c6031fb2c406933143418b887 efe4970775fb1b35525abfbd9da7ded8a8003d39 M  Gemfile
:100644 100644 f171121bb0cf5f5350636f032b07ebc3e643a271 d2fc157cf2bd0b26c7eac14a65fbd32b5fa5e312 M  Gemfile.lock
:040000 040000 771b9240530ad699dadad1ea3117754b1c927e0a 92659d3a5a4cee031435394f03049a8baa2e1209 M  app
:040000 040000 027677959fac0f3d0efca22c38e69000f19e7f9b eabdc7c09f6a8ef46d6e493bb3511a8c835e7f14 M  spec

我想查看文件的好版本和坏版本之间的差异,以确定错误原因。如何使用此输出进行操作?
3个回答

4

git diff first_bad_commit_hash^ first_bad_commit_hash会显示该第一个错误提交和其之前的提交之间的差异。

在您的情况下,应该是:

git diff 9095710f3e59feb7ad2c8609f4877998e0b5c07c^ 9095710f3e59feb7ad2c8609f4877998e0b5c07c


git log -p -1 first_bad_commit 这样做也是一个合理的替代方案。 - twalberg
在过去的几个小时里,我最终经常使用了你的 ^。这非常有帮助。 - Eric Baldwin

1

git表示回归来自提交ID 9095710f3e59feb7ad2c8609f4877998e0b5c07c。

因此,您可以使用以下方式查看9095710f3e59feb7ad2c8609f4877998e0b5c07c中的更改内容:

git show 9095710f3e59feb7ad2c8609f4877998e0b5c07c

或者与实际的HEAD有什么不同。
git diff 9095710f3e59feb7ad2c8609f4877998e0b5c07c HEAD

and so on..


1
如果你没有这样做,你应该运行git bisect resetHEAD重置到初始位置。
然后,要查看第一个坏提交和最后一个好提交之间的差异,只需使用git diff --color 9095710f3e59feb7ad2c8609f4877998e0b5c07c 36c1756119c19d4773d008a7ba944f8a9cb35a18

请注意,您不需要复制整个哈希值——前几个字符就足够了,只要在您的代码库中唯一即可。 - Andrew Aylett
@EricBaldwin,你想要比较的通常只是第一个错误提交和紧接着它之前的提交,因为你想看看在错误提交中进行了哪些更改可能会破坏你的代码。Danielle的答案因此是更好的方法。 - user456814

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接