是否有可能看到谁在git blame报告的提交之前编辑了特定的行,就像一个给定行的提交历史?
例如,我运行以下(在优秀的uncrustify项目上):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
我如何才能找到谁在提交fe25b6d之前编辑了这一行?在提交之前是谁编辑的?
是否有可能看到谁在git blame报告的提交之前编辑了特定的行,就像一个给定行的提交历史?
例如,我运行以下(在优秀的uncrustify项目上):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
我如何才能找到谁在提交fe25b6d之前编辑了这一行?在提交之前是谁编辑的?
当前回答
在前面的回答的基础上,这个bash一行代码应该可以提供您所要查找的内容。它显示了特定文件的特定行,通过最近5个修订的git责备历史:
LINE=10 FILE=src/options.cpp REVS=5; for commit in $(git rev-list -n $REVS HEAD $FILE); do git blame -n -L$LINE,+1 $commit -- $FILE; done
在这个命令的输出中,对于特定的提交,您可能会看到行内容发生变化,或者显示的行号甚至可能发生变化。
这通常表明这一行是在特定的提交之后第一次添加的。它还可以指示该行从文件的另一部分移动。
其他回答
如果你正在使用JetBrains Idea IDE(和衍生品),你可以选择几行,右键单击上下文菜单,然后Git ->显示历史选择。你将看到影响选定行的提交列表:
安布尔的回答是正确的,但我觉得不清楚;语法为:
git blame {commit_id} -- {path/to/file}
注意:——用于将树状sha1与相对文件路径分开。1
例如:
git blame master -- index.html
这一切都要归功于安布尔!:)
在前面的回答的基础上,这个bash一行代码应该可以提供您所要查找的内容。它显示了特定文件的特定行,通过最近5个修订的git责备历史:
LINE=10 FILE=src/options.cpp REVS=5; for commit in $(git rev-list -n $REVS HEAD $FILE); do git blame -n -L$LINE,+1 $commit -- $FILE; done
在这个命令的输出中,对于特定的提交,您可能会看到行内容发生变化,或者显示的行号甚至可能发生变化。
这通常表明这一行是在特定的提交之后第一次添加的。它还可以指示该行从文件的另一部分移动。
对于这个问题,一个非常独特的解决方案是使用git log,正如Andre在这里解释的那样:
git log -p -M——follow——stat——path/to/your/file
还有递归指责。它可以安装
npm install -g recursive-blame