我正在尝试跟踪一块代码(仅一行)。
使用责备只指出了一个提交,其中所讨论的这一行被作为提取方法样式的一部分移动。
我可以使用哪些技术来获得该提交,即第一次在代码库中存在特定的文本?
正如git答案所述:查找引入字符串的提交,您可以简单地使用
git log -S <line>
# or
git log -G <regex>
在存储库中找到第一次出现代码行。
来自log
的官方Linux内核GIT文档:
-S<string>
寻找介绍或删除
<string>
实例的差异。请注意,这与仅出现在diff输出中的字符串不同。有关更多详细信息-G<regex>
寻找添加或删除的线与给定的
<regex>
匹配的差异。
i通常做 git log -p filename
并搜索(按/)给定文本。
这样,您会注意到该行的变化,如果过去的文本更改,则可以继续搜索(稍微)不同的文本。
我可能会满足于:
function allcommits {
git rev-list --reverse HEAD
}
for i in `allcommits` ;do
git co -f $i 2>/dev/null ;
echo commit:$i ;
git grep -q 'that line of code' && break
done
您从第一个开始,然后在每个步骤中扫描所有文件,直到找到匹配项。