git bisect 并找到最后一个好的提交 - 我错过了啥吗?

Posted

技术标签:

【中文标题】git bisect 并找到最后一个好的提交 - 我错过了啥吗?【英文标题】:git bisect and finding last good commit - am I missing something?git bisect 并找到最后一个好的提交 - 我错过了什么吗? 【发布时间】:2021-05-21 19:19:57 【问题描述】:

我的问题涉及 git bisect 何时发现 第一个错误提交

$ git bisect good
2060c40f6c3d3c057f9fdab31643599da375296b is the first bad commit ???? ❌
commit 2060c40f6c3d3c057f9fdab31643599da375296b
Author: ....
Date:   Tue Feb 16 11:15:52 2021 -0800

现在,理想情况下,我想继续并确定LAST GOOD COMMIT

我的问题是:

(注意:我如何手动找到最后一个好的提交的步骤,请遵循。这并不难,只是乏味)。

git 完全知道2060c40f6c3d3c057f9fdab31643599da375296b 前面是8993de6cc8bac3d5867e6b84fe30c52c9e604737(见下文)。有没有办法从 git/git bisect 识别第一个错误提交时快速获取该信息,而无需手动搜索提交历史记录?

我想看什么

$ git bisect good
2060c40f6c3d3c057f9fdab31643599da375296b is the first bad commit
8993de6cc8bac3d5867e6b84fe30c52c9e604737 is the last good commit ???? MOCKUP

我如何找到最后一个好的提交的细节:

git checkout <mybranch-before-git-bisect> 然后

git log

我已经回到了顶峰,现在可以寻找第一个错误提交

/2060c40f6c3d3c057f9fdab31643599da375296b

让我感动

commit 2060c40f6c3d3c057f9fdab31643599da375296b (037.secure.010.varsettings2jsontag, refs/bisect/bad) 
❌ 1ST BAD COMMIT
Author: ...
Date:   Tue Feb 16 11:15:52 2021 -0800

    037.secure.010.varsettings2jsontag fixed, added cs-s-removefilter ing for tests

commit 8993de6cc8bac3d5867e6b84fe30c52c9e604737 (refs/bisect/good-8993de6cc8bac3d5867e6b84fe30c52c9e604737)  
✅ LAST GOOD COMMIT
Author: ...
Date:   Mon Feb 15 22:29:42 2021 -0800

什么不起作用(但感觉应该)

git log 就在 bisect 发现第一个错误提交没用之后
$ git log
commit 27f31fc8be6c6ef0ae493272364397c7b27f2550 (HEAD -> 059.ora.010.batch_usergroup_hang)
Author: ...
Date:   Tue Feb 9 21:36:43 2021 -0800 1️⃣

    "just a backup, use it sparingly on main codelines"

commit cdd80520ffd025a98629f3aa43a817ee4ebe96ab
Author: ...
Date:   Tue Jan 26 15:41:52 2021 -0800 2️⃣

    wip on generated/urls.py - not much so far

commit b7d05cf0df9a43b8ab3f36a81e618c8130905d87
Author: ...
Date:   Sun Nov 15 22:17:12 2020 -0800 3️⃣

即如果我在 git bisect 找到第一个错误提交后git log,我会在 1️⃣ 2️⃣ 3️⃣ 时间得到 3 个相隔很远的条目。许多提交丢失了,所以这是没用的。

我在 git 版本 2.23.0

【问题讨论】:

您可能只使用2060c40f6c^ 来引用最后一个好的提交(作为第一个错误提交的父级)。不需要bisect 做任何特别的事情。 @chepner 我会将其作为答案,尤其是如果您将其设置为 git show 2060c40f6c^ | head -1,它也会向我显示其父级的提交哈希。我知道这对于任何熟悉 git 的人来说一定是显而易见的,但是……那肯定不是我。 【参考方案1】:

最后一个好的提交只是第一个坏提交的父级,您可以通过将^ 附加到给定的提交哈希来找到它:

$ git show 2060c40f6c^ | head -1

【讨论】:

以上是关于git bisect 并找到最后一个好的提交 - 我错过了啥吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到最后提交记录的 ID

hdu ACM Steps 1.2.5 find your present

hdu 6070 线段树+二分

CentOS7下安装配置Docker | 并创建镜像提交到DockerHub

hdu acm-step 1.3.4 Saving HDU

(hdu step 7.1.1)Shape of HDU(推断一个多边形是否是凸多边形)