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

我在GitHub界面的文件顶部看到了一个责备按钮。点击它后,它会在左侧栏上显示与用户名的一些差异。这说明了什么?

除了GitHub,为什么git责备实际上被使用?


当前回答

git blame命令用上次修改该行的修订版本中的信息注释该行,并且…Git 2.22(2019年第二季度)会更快,因为围绕“Git责备”进行了性能修复,特别是在线性历史中(这是我们应该优化的标准)。

参见David Kastrup (fedelibre)的commit f892014(2019年4月2日)。 (由Junio C Hamano—gitster—在commit 4d8c4da中合并,2019年4月25日)

c:不要那么急切地丢掉原点的斑点 当父blob已经有块排队等待责备时,在一个责备步骤结束时丢弃blob将导致它立即被重新加载,使I/O数量增加一倍,并在处理线性历史记录时解包。 在内存中保留这样的父blob似乎是一种合理的优化,但在处理来自旧分支的合并时,主要会产生额外的内存压力。

其他回答

从GitHub:

blame命令是Git的一个特性,旨在帮助您确定是谁 对文件进行了更改。 尽管它的名字听起来很消极,但git blame实际上很漂亮 无害的;它的主要功能是指出谁改变了什么 文件中的行,以及原因。它可以是识别变化的有用工具 在你的代码中。

基本上,git-blame用于显示最后修改文件每一行的修订版本和作者。这就像检查一个文件的开发历史。

这是为了找出是哪个同事写了这句话,或者是哪个同事毁了这个项目,这样你就可以责怪他们了:)

从git-blame:

用上次修改该行的修订中的信息注释给定文件中的每一行。可以选择从给定的修订开始注释。 当指定一次或多次时,-L将注释限制为所请求的行。

例子:

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日志中的每次提交运行git blame path/to/file。

git blame命令用于了解谁/哪个提交对文件的最新更改负责。每一行的作者/提交也可以看到。

Git blame filename(提交对代码中所有行更改负责的文件)

git blame filename -L 0,10(提交负责从“0”行到“10”行的更改)

还有很多其他的指责方式,但总的来说,这些都有帮助。

git blame命令用上次修改该行的修订版本中的信息注释该行,并且…Git 2.22(2019年第二季度)会更快,因为围绕“Git责备”进行了性能修复,特别是在线性历史中(这是我们应该优化的标准)。

参见David Kastrup (fedelibre)的commit f892014(2019年4月2日)。 (由Junio C Hamano—gitster—在commit 4d8c4da中合并,2019年4月25日)

c:不要那么急切地丢掉原点的斑点 当父blob已经有块排队等待责备时,在一个责备步骤结束时丢弃blob将导致它立即被重新加载,使I/O数量增加一倍,并在处理线性历史记录时解包。 在内存中保留这样的父blob似乎是一种合理的优化,但在处理来自旧分支的合并时,主要会产生额外的内存压力。