我看到了很多关于使用git blame的方法的问题,但我真的不理解它们。
git blame
我在GitHub界面上的文件顶部看到一个怪按钮。点击它后,它会在左侧栏上显示与用户名的一些差异。这说明了什么?
为什么git blame实际上被使用,除了GitHub?
从GitHub:
blame命令是Git的一个特性,旨在帮助您确定谁是谁 . . . 尽管它的名字听起来很消极,但git blame实际上很漂亮 无害的;它的主要功能是指出谁改变了什么 文件中的行,以及原因。它可以是识别变化的有用工具
基本上,git-blame用于显示最后修改文件每行的修订版本和作者。这就像检查一个文件的开发历史。
git-blame
从git-blame:
用上次修改该行的修订中的信息注释给定文件中的每一行。可以选择从给定的修订开始注释。 当指定一次或多次时,-L将注释限制为所请求的行。
用上次修改该行的修订中的信息注释给定文件中的每一行。可以选择从给定的修订开始注释。
当指定一次或多次时,-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 ...
HEAD
也就是说,为了查看文档行的完整历史记录/日志,你需要为你的git log中的每次提交运行git blame path/to/file。
git log
git blame path/to/file
它是为了找出哪个同事写了特定的行或破坏了项目,所以你可以怪他们:)
git blame命令用于了解谁/哪个提交负责对文件的最新更改。每一行的作者/提交也可以看到。
git blame filename(提交负责更改代码中的所有行)
git blame filename
git blame filename -L 0,10(提交负责从“0”行更改为“10”行)
git blame filename -L 0,10
还有很多其他的指责方式,但总的来说,这些都有帮助。
git blame命令用上次修改该行的修订版本中的信息注释该行,并且…在Git 2.22(2019年第二季度)中,将这样做快,因为围绕&;__abc0 &;的性能修复,特别是在线性历史中(这是我们应该优化的规范)。
参见提交f892014 (02 Apr 2019) by David Kastrup (fedelibre)。 (由Junio C Hamano—gitster—在提交4 d8c4da中合并,25 Apr 2019)
fedelibre
gitster
blame.c:不要急于删除原点斑点 当父blob已经有块排队等待责备时,在一个责备步骤结束时丢弃blob将导致它立即被重新加载,使I/O数量增加一倍,并在处理线性历史记录时解包。 在内存中保留这样的父blob似乎是一种合理的优化,但在处理来自旧分支的合并时,主要会产生额外的内存压力。
blame.c
当父blob已经有块排队等待责备时,在一个责备步骤结束时丢弃blob将导致它立即被重新加载,使I/O数量增加一倍,并在处理线性历史记录时解包。
在内存中保留这样的父blob似乎是一种合理的优化,但在处理来自旧分支的合并时,主要会产生额外的内存压力。
git blame命令用于逐行检查文件的内容,查看每一行最后修改的时间以及修改的作者是谁。
如果代码中有bug,用它来确定是谁发现了它,然后你就可以责怪他了。不被指责就是被指责(d)。
如果你需要知道一行代码的历史,使用git log -S"code here"。这比指责懦夫简单多了。
git log -S"code here"
git log vs git blame