git责备怎么办?

时间:2015-07-03 09:15:19

标签: git git-blame

我看到很多关于使用git blame的方法的问题,但我并不理解它们。

我在github界面上的文件顶部看到一个blame按钮。单击它后,它会在左侧栏上显示一些带有用户名的差异。这表明了什么?

除了GitHub之外,为什么实际使用git blame?

6 个答案:

答案 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 f892014David 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更简单。

git log vs git blame