如何以编程方式比较 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,看内容是否相同
我想比较 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,看内容是否相同