我试图总结代码库的“旧”和“新”状态之间的区别。
理想情况下,我想获得“git diff”的输出,其中所有“+”和“ - ”行都将注释有关最后引入这些更改的提交的信息;理想情况下,以git漂亮的格式(例如散列,作者和日期)。
如何实现这一目标?
答案 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 -c fe25b6d^ -- src/options.cpp
git blame -c --since=3.weeks -- foo
注意:我更喜欢git blame -c
到git 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 的操作(反向注释也不是必需的,因为它将显示上一行存在 的最后一个修订版本,它实际上不会指向该行被删除的修订版本,因此实际上需要进行更多分析才能找出来)。我希望它能满足您的需求