查找Git中第一行代码的存在性

查找Git中第一行代码的存在性,git,git-blame,Git,Git Blame,我试图跟踪一段代码(仅一行)到它的提交 使用“责备”只会将我引向一个commit,其中这一行作为提取方法样式重构的一部分被移动 如果特定文本第一次出现在代码库中,我可以使用什么技术进行提交?我可能会满足于: 函数allcommits{ git版本列表——反向磁头 } 因为我在‘所有的承诺’;做 gitco-f$i2>/dev/null; 回声承诺:$i; git grep-q“那行代码”&&break 完成 从第一个提交开始签出每个提交,并扫描每个步骤中的所有文件,直到找到匹配项 我通常执行g

我试图跟踪一段代码(仅一行)到它的提交

使用“责备”只会将我引向一个commit,其中这一行作为提取方法样式重构的一部分被移动


如果特定文本第一次出现在代码库中,我可以使用什么技术进行提交?

我可能会满足于:

函数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
to
git bull
对你有用吗
git bull
向你展示了第一个存在,但是你想忽略移动:但是什么算移动?它有点模糊,这就是为什么我认为默认情况下,
git-gull
不会这样做的原因。和的可能重复。递归地责怪文件是手动/常规方式(责怪、che kout父提交、责怪等)@AD7six
git-log-s
git-log-G
效率更高,工作量更少。别忘了提交,因为git checkout--force将终止您的更改。
git log
支持
--reverse
选项……您最终可以通过这种方式找到第一个出现的行,但这可能非常低效和耗时。使用
git log-S
git log-G
更快、更高效。是的,其他选项可能更快,但这样您就拥有了该文件所有提交的整个上下文。
-G<regex>