我看到很多关于使用git blame
的方法的问题,但我并不理解它们。
我在github界面上的文件顶部看到一个blame
按钮。单击它后,它会在左侧栏上显示一些带有用户名的差异。这表明了什么?
除了GitHub之外,为什么实际使用git blame?
答案 0 :(得分:152)
来自git-scm http://git-scm.com/docs/git-blame
使用最后修改该行的修订版中的信息,为给定文件中的每一行添加注释。 (可选)从给定修订开始注释。
当指定一次或多次时,-L将注释限制为所请求的行。
示例:强>
<md-tabs md-dynamic-height>
<md-tab>
<md-tab-label>Tab label</md-tab-label>
<md-tab-body>
<md-content>The tab content</md-content>
</md-tab-body>
</md-tab>
</md-tabs>
请注意,johndoe@server.com:~# git blame .htaccess
...
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300 4) allow from all
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300 5)
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300 6) <IfModule mod_rewrite.c>
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300 7) RewriteEngine On
...
未按时间顺序显示每行修改历史记录。
它只显示最后一个人在文档中更改了一行直到git blame
中的最后一次提交。
也就是说,为了查看文档行的完整历史记录/日志,您需要为HEAD
中的每个提交运行git blame path/to/file
。
答案 1 :(得分:89)
该命令很好地解释了自己,找出哪个同事编写了特定的行或破坏了项目,以便责备他们:)
答案 2 :(得分:58)
来自GitHub https://help.github.com/articles/using-git-blame-to-trace-changes-in-a-file
blame命令是一个Git功能,旨在帮助您确定谁 对文件进行了更改。
尽管名字含糊不清,但git责备实在太漂亮了 无害的;它的主要功能是指出谁改变了哪个 文件中的行,以及为什么。它可以是识别变化的有用工具 在你的代码中。
基本上git-blame
用于显示修订版和作者最后修改文件的每一行。这就像检查文件开发的历史记录一样。
答案 3 :(得分:21)
git blame
命令用于了解哪个/哪个提交负责对文件进行的最新更改。每行的作者/提交也可以看到。
git blame filename
(负责代码中所有行的更改)
git blame filename -L 0,10
(负责从“0”行到“10”行的更改)
还有很多其他的责备选择,通常这些可能有所帮助。
答案 4 :(得分:1)
git blame
命令使用最后修改该行的修订版中的信息对行进行注释,并且...使用Git 2.22(2019年第二季度)会更快地执行此操作,因为围绕“ {git blame
”进行性能修复,尤其是在线性历史记录中(这是我们应该优化的标准)。
请参见commit f892014的David Kastrup (fedelibre
)(2019年4月2日)。
(由Junio C Hamano -- gitster
--在commit 4d8c4da中合并,2019年4月25日)
blame.c
:不要急于丢弃原始斑点当父Blob已经有排队的数据块排队时,在一个blame步骤的末尾放下Blob将导致它立即重新加载,从而在处理线性历史记录时将I / O数量加倍并拆包。 / p>
在内存中保留此类父Blob似乎是一个合理的优化,主要是在处理来自旧分支的合并时会产生额外的内存压力。
答案 5 :(得分:1)
git blame
命令用于逐行检查文件的内容,并查看每行的最后修改时间以及修改的作者。
如果代码中存在错误,请使用它来确定是谁造成的,然后可以怪他。吉特怪是怪(d)。
如果您需要了解一个行代码的历史记录,请使用git log -S"code here"
,比git blame更简单。