是否有可能在报告提交之前查看谁编辑了特定行git blame
,例如给定行的提交历史记录?
例如,我运行以下(在极好的uncrustify
项目上):
$ git blame -L10,+1 src/options.cpp ^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
如何在提交之前找出谁编辑了该行fe25b6d
?又是谁之前编辑它是承诺?
git blame -L 10,+1 fe25b6d^ -- src/options.cpp
您可以指定git blame的修订版,从(而不是默认值HEAD
)开始回顾; fe25b6d^
是...的父母fe25b6d
.
您可以使用git log -L查看一系列行的演变.
例如 :
git log -L 15,23:filename.txt
表示"跟踪名为filename.txt的文件中第15行到第23行的演变".
琥珀的答案是正确的,但我发现它不清楚; 语法是:
git blame {commit_id} -- {path/to/file}
注意:--
用于将tree-ish sha1与相对文件路径分开.1
例如:
git blame master -- index.html
充分肯定Amber知道所有的事情!:)
您可能想看看:
git gui blame
为您提供一个很好的图形显示,如"git blame",但每行可点击链接,以进入早期提交.将鼠标悬停在链接上以获取包含提交详细信息的弹出窗口.不是我的学分...在这里找到它:
http://zsoltfabok.com/blog/2012/02/git-blame-line-history/
git gui
是git的图形化Tcl/Tc接口.没有任何其他参数,它启动一个非常简单但有用的图形应用程序,用于提交文件,帅哥甚至单行和其他类似的命令,如修改,恢复,推...它是git股票套件的一部分.在Windows上,它包含在安装程序中.关于debian - 我不知道其他*nix系统 - 它必须单独安装:
apt-get install git-gui
来自文档:
https://git-scm.com/docs/git-gui
描述
基于Tcl/Tk的Git图形用户界面.git gui专注于允许用户通过进行新提交,修改现有提交,创建分支,执行本地合并以及获取/推送到远程存储库来更改其存储库.
与gitk不同,git gui专注于提交生成和单个文件注释,并不显示项目历史记录.然而,它确实提供了菜单操作以从git gui中启动gitk会话.
众所周知,git gui适用于所有流行的UNIX系统,Mac OS X和Windows(在Cygwin和MSYS下).在可能的范围内遵循OS特定的用户界面指南,使git gui成为用户的相当原生的界面.
COMMANDS
怪
在给定版本(或工作目录,如果未指定)上的指定文件上启动blame查看器.
浏览器
启动树形浏览器,显示指定提交中的所有文件.通过浏览器选择的文件在责备查看器中打开.
citool
启动git gui并安排在退出并返回shell之前进行一次提交.界面仅限于提交操作,稍微减少了应用程序的启动时间并简化了菜单栏.
版
显示当前运行的git gui版本.
在前面的答案的基础上,这个bash单行应该给你你想要的东西.它通过最近5次修订显示特定文件的特定行的git blame历史记录:
LINE=10 FILE=src/options.cpp REVS=5; for commit in $(git rev-list -n $REVS HEAD $FILE); do git blame -n -L$LINE,+1 $commit -- $FILE; done
在此命令的输出中,您可能会看到对于特定提交,行更改的内容或显示的行号甚至可能会更改.
这通常表示在该特定提交之后第一次添加了该行.它还可以指示该行已从文件的另一部分移动.
还有recursive-blame
.它可以安装
npm install -g recursive-blame
这个问题的一个非常独特的解决方案是使用git log:
git log -p -M --follow --stat - path/to/your/file
正如Andre 在这里所解释的那样
如果您使用的是JetBrains Idea IDE(及其衍生产品),则可以选择几行,右键单击上下文菜单,然后单击Git->显示历史记录以进行选择。您将看到影响所选行的提交列表: