42

GIT 是否有可能以某种方式找到哪个提交在特定文件中引入了特定的代码行?这是假设自从添加该行以来已经有很多提交。或者这是否必须在脚本中完成,同时查看该行所在文件的所有提交的 git blame ?

澄清

原始文件->行添加到文件并提交->许多其他提交添加其他行并更改代码

4

4 回答 4

37

您可以使用git blame -l filename从更改行时获取 SHA1 哈希。

您还可以使用 --reverse:

- 逆转

让历史前进而不是倒退。这不是显示出现行的版本,而是显示存在行的最后一个版本。这需要一系列修订,例如 START..END,其中责备路径存在于 START 中。

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

于 2012-12-03T21:37:59.967 回答
6

看来您可以使用 git log -L 来检查文件。例如,我想检查 file.c 的提交,从 55 到 60 行:

git log -L55,60:file.c
于 2017-02-07T07:21:02.710 回答
4

您可以像这样责怪特定的代码字符串。

git log -S 'THE-CODE' 
于 2017-06-25T22:15:17.277 回答
2

假设该行自从添加以来没有改变,那么简单地:

git blame <that file>然后寻找你所追求的线。

如果该行自添加以来已被修改,您仍然git blame可以找出该行被更改的最后一次提交,然后git checkout <sha>~1sha原始中显示的 sha 在哪里git blame)并git blame再次返回历史那条线。

于 2012-12-03T21:34:45.467 回答