我试图总结代码库的“旧”和“新”状态之间的区别。
理想情况下,我想获得“git diff”的输出,其中所有“+”和“ - ”行都将注释有关最后引入这些更改的提交的信息;理想情况下,以git漂亮的格式(例如散列,作者和日期)。
怎么能实现这一目标?
你可以编写一个类似的小脚本
git blame before > before
git blame after > after
diff -u before after
:)
见man 1 git
re:GIT_EXTERNAL_DIFF
。
请注意,您可以要求git blame
:
git blame -c fe25b6d^ -- src/options.cpp
git blame -c --since=3.weeks -- foo
注意:我更喜欢git blame -c
和git annotate:
此命令与
git-blame
之间的唯一区别是它们使用稍微不同的输出格式,并且此命令仅用于向后兼容以支持现有脚本,并为来自其他SCM系统的人员提供更熟悉的命令名称。
我认为目前这不容易。但是如果你想查看带有blame信息的文件提交差异的上下文,你可以这样做:
$ sha1=$(git rev-parse --short HEAD); git blame $sha1 -- filename |grep -C5 --color ^$sha1
git blame
将像往常一样注释文件,grep
将为该提交中引入的每个更改显示五行上下文。
git-diff-blame似乎相关。
显示与作者和提交等非责任信息的差异
我不知道是否有一种简单的方法来获得带注释的git diff
结果(如“blamed diff”)。
您可以使用--full-diff
的git log -p
选项来获取提交消息+ diff。
我使用了一个工具(基于python)来完成这个...甚至计算删除的行做一些接近反向注释的东西(反向注释并不是所需要的,因为它将显示最后一个修订版,其中一行是目前,它实际上不会指向删除该行的修订版,因此它实际上需要更多的分析来弄清楚)。我希望它符合您的需求