如何以编程方式比较 git 中两个修订版的文件?

How do I programmatically compare files at two revisions in git?

我想比较 git 中不同提交的文件的两个版本(存在于不同的路径中)。我不想要差异,我只是想知道内容和模式是否相同。差异文件的文档没有说明 return 值的任何含义。我在 git 中没有看到类似于 cmp(1) 的内容。是否有其他管道工具可以执行此操作,或者差异文件是否具有 return 值来表达这一点?

git diff --exit-code <commit> <commit>相信你在找。 它几乎在文档的底部 https://git-scm.com/docs/git-diff

或者

git diff --quiet <commit> <commit> 如果您只对退出代码感兴趣(无控制台输出)

git ls-tree <commit> -- <path> 输出

<mode> SP <type> SP <object> TAB <file>

<mode>是文件模式。 <object>是表示内容的sha1

比较模式和对象。

<object>这里可以换个名字

<commit>:<path>

所以git rev-parse <commit>:<path>可以输出blob或树的sha1。比较两个sha1,看内容是否相同