Mar*_*ark 191
来自git-scm http://git-scm.com/docs/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
...
Run Code Online (Sandbox Code Playgroud)
请注意,git blame
并未按时间顺序显示每行修改历史记录.它只显示谁是最后一个将文档中的行更改为最后一次提交的人HEAD
.
也就是说,为了查看文档行的完整历史记录/日志,您需要为git blame path/to/file
您的每个提交运行一个git log
.
小智 118
该命令解释得非常好,它是要弄清楚哪个同事写了特定的行或破坏了项目,所以你可以责怪他们:)
Him*_*hra 65
来自GitHub https://help.github.com/articles/using-git-blame-to-trace-changes-in-a-file
blame命令是一个Git功能,旨在帮助您确定谁对文件进行了更改.
尽管它的名字含糊不清,但git责备实际上是非常无害的; 它的主要功能是指出谁更改了文件中的哪些行以及原因.它可以是识别代码更改的有用工具.
基本上git-blame
用于显示哪些修订版本和作者最后修改了文件的每一行.这就像检查文件开发的历史记录一样.
小智 29
该git blame
命令用于了解谁/哪个提交负责对文件进行的最新更改.还可以看到每行的作者/提交.
git blame filename
(提交对代码中所有行的更改负责)
git blame filename -L 0,10
(负责从"0"行到"10"行的更改)
还有很多其他选择,通常这些可能会有所帮助.
Jac*_*ine 14
该git blame
命令用于逐行检查文件的内容,并查看每行的最后修改时间以及修改的作者是谁。
如果代码中有错误,用它来识别是谁发现的,然后你就可以责怪他。Git 的责备就是受到责备(d)。
如果您需要了解一行代码的历史记录,请使用git log -S"code here"
. 它比 git Blame 更简单。
该git blame
命令使用最后修改该行的修订版中的信息来注释行,并且...使用 Git 2.22(2019 年第 2 季度),由于围绕“”的性能修复,尤其是在线性历史记录中git blame
(这是我们应该优化的规范)。
请参阅David Kastrup提交的 f892014(2019 年 4 月 2 日) ( )。
(由Junio C Hamano 合并 -- --在提交 4d8c4da中,2019 年 4 月 25 日)fedelibre
gitster
blame.c
:不要那么急切地丢弃原始斑点当父 blob 已经有排队等候指责的块时,在一个指责步骤结束时删除该 blob 将导致它立即重新加载,从而使处理线性历史记录时的 I/O 和解包量加倍。
将此类父 blob 保留在内存中似乎是一种合理的优化,在处理来自旧分支的合并时,通常会带来额外的内存压力。
在 Git 2.41(2023 年第 2 季度)之前,“ git blame --contents=<file>
--
`` ” (man)<file>
曾经是被禁止的,但现在它通过导致 的历史来查找从 content 开始的行的起源<rev>
。
请参阅Jacob Keller ( )提交的提交 1a3119e(2023 年 3 月 24 日)。(由Junio C Hamano 合并 -- --在提交 62df03c中,2023 年 4 月 4 日)jacob-keller
gitster
blame
:允许--contents
使用非 HEAD 提交签署人:雅各布·凯勒
该
--contents
选项可以与( man )一起使用来责怪该文件,就好像它具有指定文件中的内容一样。 这类似于将内容复制到工作树中,然后运行 gitblame。自1cfe773 起就支持此选项(:no rev 表示从工作树文件开始。,2007-01-30,Git v1.5.0-rc4 -- merge)(“ :no rev 表示从工作树文件开始。” )git blame
git-blame
git-blame
该
--contents
选项总是指责该文件,就好像它基于当前的 HEAD 提交一样。
如果您在使用时尝试通过修订版--contents
,您会收到以下错误:Run Code Online (Sandbox Code Playgroud)fatal: cannot use --contents with final commit object name
这是因为 Blame 进程会生成一个伪造的工作树提交,该提交始终使用 HEAD 对象作为其唯一父对象。
增强
fake_working_tree_commit
以获取用于父级的对象 ID,而不是始终使用 HEAD 对象。
然后,当我们提供内容时,总是生成一个假提交,即使我们有一个最终对象。
删除禁止检查--contents
和最终修订。请注意,当提供但未提供修订时,仍然会跳过生成假工作提交的行为
--contents
。
在这种情况下生成这样的提交会将当前签出的文件内容与提供的修订结合起来,这会破坏正常的责备行为并产生意外的结果。这使得可以使用
--contents
任意修订版,而不是强制使用本地 HEAD 提交。
这使得该--contents
选项更加灵活,因为在使用 --contents 之前不再需要将工作树签出到所需的提交。
blame-options
现在包含在其手册页中:
假设正在注释的文件有一个提交,其中包含指定文件的内容和 的父级
<rev>
,如果未<rev>
指定,则默认为 HEAD。
您可以指定“-
”以使命令从标准输入读取文件内容。
git blame
现在包含在其手册页中:
[ --contents <file> ] [<rev> | --reverse <rev>..<rev>] [--] <file>
仍然使用 Git 2.41(2023 年第 2 季度),输出由“git blame
仍然使用 Git 2.41(2023 年第 2 季度),“ ” ( man )将一行归因于从选项指定的文件中获取的内容,--contents
显示它与归因于工作树文件的行不同。
请参阅Jacob Keller ( )的提交 603d0fd(2023 年 4 月 24 日)。(由Junio C Hamano合并-- --jacob-keller
gitster
在提交 cf85f4b中,2023 年 5 月 2 日)
blame
:对 --contents 生成的假提交使用不同的作者姓名建议人: Junio C Hamano
建议人: Glen Choo
签署人: Jacob Keller
当该
--contents
选项与git blame
选项与( man ),并且文件内容中的某些行无法通过所指责的历史记录进行注释时,用户将看到“尚未提交”的作者。
这类似于在没有修订的情况下进行指责时处理工作树内容的方式。这有点令人困惑,因为这些数据不是工作副本,虽然从技术上讲它“尚未提交”,但它也来自外部文件。
将此作者姓名替换为“External file (--contents)
”,以更好地将此类行与实际工作副本行区分开来。
blame-options
现在包含在其手册页中:
使用指定文件中的内容进行注释,
<rev>
如果指定则从该文件开始,否则使用 HEAD。
您可以指定“-”以使命令从标准输入读取文件内容。
归档时间: |
|
查看次数: |
141628 次 |
最近记录: |