是否可以注释“git diff”?

时间:2012-11-06 13:35:48

标签: git version-control

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

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

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

如何实现这一目标?

6 个答案:

答案 0 :(得分:4)

您可以编写一个类似

的小脚本
git blame before > before
git blame after > after
diff -u before after

:)

请参阅man 1 git re:GIT_EXTERNAL_DIFF

答案 1 :(得分: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 :(得分:2)

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

$(".phone").each(function(){

  var name = $(this).parent().clone().children().remove().end().text();
  var phonenumber = $(this).text();

  contact.push({name: name, phoneNumber: phonenumber});  
});

console.log(contact);

$ sha1=$(git rev-parse --short HEAD); git blame $sha1 -- filename |grep -C5 --color ^$sha1 将像往常一样注释文件,git blame将为该提交中引入的每个更改显示五行上下文。

答案 3 :(得分:2)

git-diff-blame似乎很有用。

  

与作者和提交

之类的责备信息一起显示差异

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

我使用了一个工具(基于python)来做到这一点...甚至算作删除的行对反向注释进行了 close 的操作(反向注释也不是必需的,因为它将显示上一行存在 的最后一个修订版本,它实际上不会指向该行被删除的修订版本,因此实际上需要进行更多分析才能找出来)。我希望它能满足您的需求

https://github.com/eantoranz/difflame