我想看到所有git提交影响了我的一个文件中当前行x-y的内容。我有办法做到吗?
答案 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.
答案 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>
并询问撰写困扰您的行的人。