git log表示文件的一部分

时间:2011-05-05 13:59:32

标签: git

我想看到所有git提交影响了我的一个文件中当前行x-y的内容。我有办法做到吗?

3 个答案:

答案 0 :(得分:15)

现在git log支持-L选项,例如git blame。这是在Git v1.8.4中添加的。

 -L <start>,<end>:<file>
 -L :<regex>:<file>

 Trace the evolution of the line range given by "<start>,<end>" (or
 the funcname regex <regex>) within the <file>. You may not give any
 pathspec limiters. This is currently limited to a walk starting from a
 single revision, i.e., you may only give zero or one positive revision
 arguments. You can specify this option more than once.

git-log documentation

答案 1 :(得分:5)

您可以将git blame与-L选项一起使用:

-L <start>,<end> 

 Annotate only the given line range. <start> and <end> can take one of these forms: 

 number 

If <start> or <end> is a number, it specifies an absolute line number (lines count from 1).

 /regex/ 

This form will use the first line matching the given POSIX regex. If <end> is a regex, it will search starting at the line given by <start>.

 +offset or -offset 

This is only valid for <end> and will specify a number of lines before or after the line given by <start>.

所以它将如下所示:

git blame -L 40,60 foobar

请注意,git blame显示每行的最新修订版。您也可以尝试使用--reverse选项:

  

- 反向

     

走向历史而不是   向后。而不是显示   出现一条线的修订,   这显示了最后一次修订   一条线已经存在。这需要一个   修订范围如START..END   责任的道路存在于哪里   START。

http://www.kernel.org/pub/software/scm/git/docs/git-blame.html

您也可以使用

gitk foobar

答案 2 :(得分:0)

不是您的问题的答案,但您可以使用git blame <file>并询问撰写困扰您的行的人。