是否可以注释“git diff”?

问题描述 投票:22回答:6

我试图总结代码库的“旧”和“新”状态之间的区别。

  • 我可以做“git log”,但遗憾的是提交消息并不总是足够的。
  • 我可以做“git diff”,但是我想看看我看到的差异的一些解释,或者至少提交哈希以便以后保存
  • 我可以为更改的文件执行“git diff --stat”然后“git annotate”,但是我没有看到如何要求annotate仅显示自特定提交以来的更改。

理想情况下,我想获得“git diff”的输出,其中所有“+”和“ - ”行都将注释有关最后引入这些更改的提交的信息;理想情况下,以git漂亮的格式(例如散列,作者和日期)。

怎么能实现这一目标?

git version-control
6个回答
4
投票

你可以编写一个类似的小脚本

git blame before > before
git blame after > after
diff -u before after

:)

man 1 git re:GIT_EXTERNAL_DIFF


2
投票

请注意,您可以要求git blame

  • 从某个提交中注释请参阅“Git blame — prior commits?”:git blame -c fe25b6d^ -- src/options.cpp
  • 或从某个日期注释: git blame -c --since=3.weeks -- foo

注意:我更喜欢git blame -cgit annotate

此命令与git-blame之间的唯一区别是它们使用稍微不同的输出格式,并且此命令仅用于向后兼容以支持现有脚本,并为来自其他SCM系统的人员提供更熟悉的命令名称。


2
投票

我认为目前这不容易。但是如果你想查看带有blame信息的文件提交差异的上下文,你可以这样做:

$ sha1=$(git rev-parse --short HEAD); git blame $sha1 -- filename |grep -C5 --color ^$sha1

git blame将像往常一样注释文件,grep将为该提交中引入的每个更改显示五行上下文。


2
投票

git-diff-blame似乎相关。

显示与作者和提交等非责任信息的差异


1
投票

我不知道是否有一种简单的方法来获得带注释的git diff结果(如“blamed diff”)。

您可以使用--full-diffgit log -p选项来获取提交消息+ diff。


0
投票

我使用了一个工具(基于python)来完成这个...甚至计算删除的行做一些接近反向注释的东西(反向注释并不是所需要的,因为它将显示最后一个修订版,其中一行是目前,它实际上不会指向删除该行的修订版,因此它实际上需要更多的分析来弄清楚)。我希望它符合您的需求

https://github.com/eantoranz/difflame

© www.soinside.com 2019 - 2024. All rights reserved.