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

Git 列出更改特定提交中特定行的所有提交,git,git-commit,git-log,Git,Git Commit,Git Log,假设commit X更改了文件foo.java的第500行。我想看看过去所有改变这一行的提交 受此启发,我了解到自git 1.8.4以来,我们可以使用git log的-L选项来查看特定行范围的演变。所以我使用git log-L 500500:foo.java 然而,我得到了一个错误的说法 文件foo.java只有450行 我怀疑原因是我的git log命令在头部运行。但是在commit X和HEAD之间,文件foo.java被修改,结果只有450行 那么,如何从commit X获取所有更改了第5

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

受此启发,我了解到自git 1.8.4以来,我们可以使用git log的-L选项来查看特定行范围的演变。所以我使用git log-L 500500:foo.java

然而,我得到了一个错误的说法

文件foo.java只有450行

我怀疑原因是我的git log命令在头部运行。但是在commit X和HEAD之间,文件foo.java被修改,结果只有450行


那么,如何从commit X获取所有更改了第500行的提交呢?

您可以对每个SHA1使用相同的命令,并且

用于xargs命令的windows上带有Gnu的windows

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


你能再解释一下这个命令吗?我应该把文件放在哪里?什么是HEAD | xargs和2>/dev/null?非常感谢@lda是基本脚本,使用重定向unix.stackexchange.com/questions/70963/difference-between-2-dev-null-dev-null-and-dev-null-21和管道|。您不必输入SHA1:git rev list应该在回购中为您列出所有SHA1。@lda但如果您必须输入SHA1'X',您可以使用git rev list X..HEAD:将'X'替换为您的SHA1。谢谢,但是我在没有2>NUL部分的情况下使用您的命令时出错:致命:要从以下位置进行挖掘的多个提交:A7D7F9E4036BF9AB524B88CB8210C97EF36BC9C和24767679C82F94EAB5D81346BDDF63F8BDBCA36?@lda您在Windows上吗?您使用的是简单的cmd会话还是gitbash?
git rev-list HEAD|xargs git log -1 -L 500,500:foo.java 2>/dev/null