GIT能否以某种方式找到在特定文件中引入特定代码行的提交?这假设自添加该行以来已有许多提交。或者这是必须在脚本中完成的事情,同时查看存在该行的文件的所有提交的git责任?
澄清
原始文件 - >已添加到文件并已提交的行 - >许多其他提交添加其他行并更改代码
答案 0 :(得分:35)
您可以使用git blame -l filename
从线路更改时获取SHA1哈希值。
你也可以使用--reverse:
- 反
向前走,而不是落后。这不显示出现一行的修订,而是显示一行存在的最后修订版。这需要一系列的修订,如START..END,其中指责路径存在于START。
请参阅:http://www.kernel.org/pub/software/scm/git/docs/git-blame.html
答案 1 :(得分:2)
假设线路在添加后没有改变,那么只需:
git blame <that file>
然后查找您要追踪的行。
如果该行在添加后已被修改,您仍然可以git blame
找出该行被更改的最后一次提交,然后git checkout <sha>~1
(其中sha
是原始git blame
)和git blame
中显示的sha再次返回该行的历史记录。
答案 2 :(得分:2)
看来你可以使用git log -L来检查文件。 例如,我想检查file.c的提交,从55到60的行:
git log -L55,60:file.c
答案 3 :(得分:2)
你可以责怪像这样的特定代码字符串。
git log -S 'THE-CODE'