GIT 是否有可能以某种方式找到哪个提交在特定文件中引入了特定的代码行?这是假设自从添加该行以来已经有很多提交。或者这是否必须在脚本中完成,同时查看该行所在文件的所有提交的 git blame ?
澄清
原始文件->行添加到文件并提交->许多其他提交添加其他行并更改代码
GIT 是否有可能以某种方式找到哪个提交在特定文件中引入了特定的代码行?这是假设自从添加该行以来已经有很多提交。或者这是否必须在脚本中完成,同时查看该行所在文件的所有提交的 git blame ?
澄清
原始文件->行添加到文件并提交->许多其他提交添加其他行并更改代码
您可以使用git blame -l filename
从更改行时获取 SHA1 哈希。
您还可以使用 --reverse:
- 逆转
让历史前进而不是倒退。这不是显示出现行的版本,而是显示存在行的最后一个版本。这需要一系列修订,例如 START..END,其中责备路径存在于 START 中。
见:http ://www.kernel.org/pub/software/scm/git/docs/git-blame.html
看来您可以使用 git log -L 来检查文件。例如,我想检查 file.c 的提交,从 55 到 60 行:
git log -L55,60:file.c
您可以像这样责怪特定的代码字符串。
git log -S 'THE-CODE'
假设该行自从添加以来没有改变,那么简单地:
git blame <that file>
然后寻找你所追求的线。
如果该行自添加以来已被修改,您仍然git blame
可以找出该行被更改的最后一次提交,然后git checkout <sha>~1
(sha
原始中显示的 sha 在哪里git blame
)并git blame
再次返回历史那条线。