我对文件进行了修复,并将其提交到我的git
存储库。
过了一段时间,我发现它已经退步了。我想知道修复程序是在哪个提交中被删除的,所以我尝试了git bisect
and git log --all -S TERM
,其中“TERM”是我的修复程序添加的字符串,并且在项目的其他任何地方都没有出现。
我发现这git bisect
归咎于一个不相关的提交,我发现git log --all -S TERM
它只列出了我添加 TERM 的提交,并没有列出任何已删除它的提交,即使它不再在“master”的文件中。
经过一番手动搜索,我发现两个分支之间存在合并提交。一个分支有我的修复,一个没有。合并作者选择了没有我修复的分支(奇怪,因为文件中没有冲突)。
我的问题是:
- 为什么
git bisect
找不到合并更改?我在手册页中没有看到任何关于此限制的内容。是否有不同的使用方法可以在上述场景中找到错误的合并? - 为什么不
git log --all -S TERM
列出合并提交?手册页说它列出了“引入或删除”实例的提交。该合并提交不会删除我的字符串吗?是否有不同的使用方法可以在上述场景中找到错误的合并? - 如果在上述情况下无用,那么找到错误合并的有效方法是什么
git bisect
?git log -S
如果没有这些工具,我似乎需要很长时间才能追踪有问题的变化。