查找从git存储库中删除一段代码的时间

时间:2015-12-30 14:51:20

标签: git diff git-diff

我在旧版软件中有一段代码已从当前版本中删除。我想找到从代码库中删除此部分的时间。目前我这样做的方法是针对每个旧提交手动区分我的集成分支,但是具有代码的文件版本和我当前版本之间有很多提交。

简而言之,如果我在旧版本的文件的第44-52行上编码,那么在新版本中不存在,如何在删除时找到提交?

2 个答案:

答案 0 :(得分:2)

尝试git log -S"<code>" -- file_paths,它会显示指定字符串发生变化的提交。

这意味着如果你删除一个代码段,那么对该代码的引用将减少1。

e.g

  

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使用126127来指示特定的错误状态(127是对于未找到的命令,126用于找到命令但不可执行 - 这些细节无关紧要,因为它们是脚本中的正常错误,就bisect run而言。“

演示代码

Here您可以查看有关如何使用git bisect

的示例代码