我想找出所有更改了一行代码的作者。Git-log 可以在文件级别上做到这一点。我阅读了手册页,似乎 git log 无法在行级别上执行此操作。有没有办法使用 git 命令来做到这一点,或者我需要为自己编写一个脚本?
出于我的目的,我想对所有代码行执行此操作。我这样做是为了为我的研究生成作者身份培训数据。
我想找出所有更改了一行代码的作者。Git-log 可以在文件级别上做到这一点。我阅读了手册页,似乎 git log 无法在行级别上执行此操作。有没有办法使用 git 命令来做到这一点,或者我需要为自己编写一个脚本?
出于我的目的,我想对所有代码行执行此操作。我这样做是为了为我的研究生成作者身份培训数据。
您想将-S
和--pretty
标志组合在git log
.
从git log
手册页,-S
镐搜索:
-S<string>
Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output;
see the pickaxe entry in gitdiffcore(7) for more details.
此标志查找对特定字符串的所有更改。使用另一个 SO 答案中的示例, git log -g -Ssearch_for_this
将在历史记录中搜索对“search_for_this”的所有更改。
结合它--pretty
以获得更好的结果。例如,此命令将在历史记录中搜索对 'foo' 的更改并返回缩短的哈希值,然后是作者、两个破折号、消息的第一行、两个破折号和日期:
$ git log -Sfoo --pretty=format:'%h %an -- %s -- %ad'
bc34134 Sally Developer -- Fixed all bugs and made all clients happy forever -- Tue Jan 31 17:41:17 2025 -0500