我想知道有没有办法在git中查看某个区域的历史记录,即所有涉及某些代码片段的提交(定义为几个连续的代码行)?我认为这很酷。
我正在使用magit,所以关于如何使用magit实现这一目标的任何建议都会更好。
答案 0 :(得分:3)
第一个简单的解决方案是git log -- file1 file2 dir1
:它只会显示触及这些文件/目录的提交。
另一种方法是使用git gui blame <commit> file
这里的每一行文件都将使用引入它的sha1进行注释,你可以点击那些sha1来在提交之间导航。
答案 1 :(得分:3)
您可能需要git-log -L
-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.
<start> and <end> can take one of these forms:
o number
If <start> or <end> is a number, it specifies an absolute line number
(lines count from 1).
o /regex/
This form will use the first line matching the given POSIX regex. If
<start> is a regex, it will search from the end of the previous -L range,
if any, otherwise from the start of file. If <start> is "^/regex/", it
will search from the start of file. If <end> is a regex, it will search
starting at the line given by <start>.
o +offset or -offset
This is only valid for <end> and will specify a number of lines before or
after the line given by <start>.
If '`:<regex>'' is given in place of <start> and <end>, it denotes the range
from the first funcname line that matches <regex>, up to the next funcname
line. `:<regex>'' searches from the end of the previous `-L range, if any,
otherwise from the start of file. "^:<regex>" searches from the start of file.
对于magit来说,目前还没有支持,但有一个相关的公开问题:https://github.com/magit/magit/issues/1717