我在旧版软件中有一段代码已从当前版本中删除。我想找到从代码库中删除此部分的时间。目前我这样做的方法是针对每个旧提交手动区分我的集成分支,但是具有代码的文件版本和我当前版本之间有很多提交。
简而言之,如果我在旧版本的文件的第44-52行上编码,那么在新版本中不存在,如何在删除时找到提交?
答案 0 :(得分:2)
尝试git log -S"<code>" -- file_paths
,它会显示指定字符串发生变化的提交。
这意味着如果你删除一个代码段,那么对该代码的引用将减少1。
git log -S“hello world” - src /
这显示添加或删除“hello world”的提交。
答案 1 :(得分:1)
实现目标的方法是使用bisect run <script>
像目前为止一样使用bisect,并使用带有脚本选项的bisect。
脚本将返回相应的跳过代码(或125代表不可测试 - 在您的情况下更合适)。
请注意,如果当前源代码良好,脚本应退出代码
0
,如果当前源代码不正确,则退出code between 1 and 127
(包括)except 125
任何其他退出代码都将中止bisect进程。应该注意的是,一个程序终止于&#34;退出(-1)&#34;离开$? = 255,(参见exit(3)手册页),因为该值被&#34;&amp; 0377&#34;
当无法测试当前源代码时,应使用特殊退出代码125。如果脚本以此代码退出,则将跳过当前修订(请参阅上面的git bisect)。
选择
125
作为用于此目的的最高敏感值,因为POSIX shell使用126
和127
来指示特定的错误状态(127
是对于未找到的命令,126
用于找到命令但不可执行 - 这些细节无关紧要,因为它们是脚本中的正常错误,就bisect run
而言。“
Here您可以查看有关如何使用git bisect
的示例代码