列出更改特定提交中特定行的所有提交

时间:2014-07-21 03:38:55

标签: git git-commit git-log

假设提交X更改了文件foo.java的第500行。我希望看到所有改变了这一行的过去提交。

受到this thread的启发,我了解自从git 1.8.4起,我们可以使用-L的{​​{1}}选项来查看特定行范围的演变。所以我使用git log

然而,我收到错误

  

文件foo.java只有450行

我怀疑原因是我的git log -L 500,500:foo.java命令在HEAD上运行。但是在提交X和HEAD之间,文件foo.java已被修改,最终只有450行。

那么,我如何才能从提交X中获取所有已更改此行500的提交?

1 个答案:

答案 0 :(得分:0)

您可以使用git rev-list

为每个SHA1尝试相同的命令

windows(使用Gnu在Windows上执行xargs命令)

git rev-list HEAD|xargs git log -1 -L 500,500:foo.java 2>NUL

Unix的:

git rev-list HEAD|xargs git log -1 -L 500,500:foo.java 2>/dev/null