查找Git中第一行代码的存在性
我试图跟踪一段代码(仅一行)到它的提交 使用“责备”只会将我引向一个commit,其中这一行作为提取方法样式重构的一部分被移动查找Git中第一行代码的存在性,git,git-blame,Git,Git Blame,我试图跟踪一段代码(仅一行)到它的提交 使用“责备”只会将我引向一个commit,其中这一行作为提取方法样式重构的一部分被移动 如果特定文本第一次出现在代码库中,我可以使用什么技术进行提交?我可能会满足于: 函数allcommits{ git版本列表——反向磁头 } 因为我在‘所有的承诺’;做 gitco-f$i2>/dev/null; 回声承诺:$i; git grep-q“那行代码”&&break 完成 从第一个提交开始签出每个提交,并扫描每个步骤中的所有文件,直到找到匹配项 我通常执行g
如果特定文本第一次出现在代码库中,我可以使用什么技术进行提交?我可能会满足于:
函数allcommits{
git版本列表——反向磁头
}
因为我在‘所有的承诺’;做
gitco-f$i2>/dev/null;
回声承诺:$i;
git grep-q“那行代码”&&break
完成
从第一个提交开始签出每个提交,并扫描每个步骤中的所有文件,直到找到匹配项 我通常执行
git log-p filename
并搜索(按/)给定的文本
通过这种方式,您可以注意到该行的更改,并且如果文本在过去发生了更改,您可以继续搜索(稍微)不同的文本。如至中所述,您只需使用
git log -S <line>
# or
git log -G <regex>
查找引入或删除
实例的差异。请注意,这不同于仅出现在diff输出中的字符串;有关详细信息,请参见中的鹤嘴锄条目
-G<regex>
-G
查找添加或删除的行与给定的
匹配的差异
-C
和/或-M
togit bull
对你有用吗git bull
向你展示了第一个存在,但是你想忽略移动:但是什么算移动?它有点模糊,这就是为什么我认为默认情况下,git-gull
不会这样做的原因。和的可能重复。递归地责怪文件是手动/常规方式(责怪、che kout父提交、责怪等)@AD7sixgit-log-s
或git-log-G
效率更高,工作量更少。别忘了提交,因为git checkout--force将终止您的更改。git log
支持--reverse
选项……您最终可以通过这种方式找到第一个出现的行,但这可能非常低效和耗时。使用git log-S
或git log-G
更快、更高效。是的,其他选项可能更快,但这样您就拥有了该文件所有提交的整个上下文。
-G<regex>