按关键字查找丢失的行

我曾在我的Git仓库中的某个地方出现过一个包含单词“Foo”的行,之前有数百个提交。

如果有什么方法可以在没有购买FishEye的情况下最后一次找到它的修订版号?


这可以通过gitlog-S )选项来gitlog

 git log -SFoo -- path_containing_change

(你甚至可以添加一个时间范围:-- --since=2009.1.1 --until=2010.1.1

-S<string>

寻找引入或移除<string>实例的差异。
请注意,这与简单出现在diff输出中的字符串不同。 请参阅gitdiffcore(7)中的镐条目了解更多详情。

diffcore-pickaxe

此转换用于查找表示触摸指定字符串的更改的文件对。
当使用diffcore-pickaxe ,它会检查是否有文件对的“原始”端具有指定的字符串,而其“结果”端没有。
这样的文件对代表“该变化集中出现的字符串”。
它还检查丢失指定字符串的相反情况。


2014年更新:

从那以后,你可以做(​​从空白回答):

git log -p --all -S 'search string'
git log -p --all -G 'match regular expression'

这些日志命令列出提交,添加或删除给定的搜索字符串/正则表达式,(通常)更新的第一个。
-p (-- --patch )选项会使相关的diff显示在添加或删除模式的位置,因此您可以在上下文中看到它。

找到了一个相关的提交,添加了您正在查找的文本(例如8beeff00d ),找到包含提交的分支:

git branch -a --contains 8beeff00d

(我参考了“如何列出包含给定提交的分支的最后一个命令?”)


最坏的情况下,使用git bisectgrep

链接地址: http://www.djcxy.com/p/19685.html

上一篇: find lost line by keyword

下一篇: Fonts inside a font family display different in size