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

时间:2016-07-21 20:15:25

标签: git git-plumbing

我想在git中的不同提交中比较文件的两个版本(存在于不同路径)。我不想要差异,我只是想知道内容和模式是否相同。 diff-files的文档并不表示返回值的任何含义。我在git中看不到与cmp(1)类似的东西。是否有另一个管道工具来执行此操作,或者diff文件是否具有表达此值的返回值?

2 个答案:

答案 0 :(得分:3)

git diff --exit-code <commit> <commit>我相信你在寻找。 它几乎位于文档https://git-scm.com/docs/git-diff

的底部

或者

git diff --quiet <commit> <commit>如果您纯粹对退出代码感兴趣,仅此而已(无控制台输出)

答案 1 :(得分:0)

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,我们可以看到内容是否相同。