我知道git跟踪内容并部分基于内容生成sha。但是,sha也基于父提交。 当我重新分支一个分支时,因为我的提交现在有一个不同的祖先,所以我的所有提交都有不同的shas。
但是我想知道,有没有办法比较两个提交(或提交范围),看看是否内容方面,它们是相同的? 这也应该能够判断二进制变化是否也是相同的。
我正在考虑是否有某种方法可以在没有合并祖先信息的情况下获取内容,可能会这样做。
感谢您的帮助,
答案 0 :(得分:10)
你想要git log的--cherry-mark选项,当它们的补丁内容相同时,它会用等号标记提交。
git log --decorate --graph --oneline --cherry-mark --boundary A...B
是比较重新分支的分支B和原始分支A的好方法。我使用它来检查一旦TFS到达它,我使用git-tfs进行的提交仍然可以。
答案 1 :(得分:1)
commit头包含树对象的sha,即文件系统内容(内容+结构)。写一个脚本来比较那些不会太难。
Blob也有ID,所以如果你只是查看一个或两个文件,你可以比较它们。
答案 2 :(得分:1)
https://stackoverflow.com/a/23527631/2630028
diff <(git show 123456) <(git show abcdef)