2013-04-18 128 views
1

当您调用git diff时,它使用diff实用程序比较文件,但不以默认方式。它使用了一些额外的选项,一些我可以命名为:git diff用于diff命令的参数是什么?

  • 行之前的不同标记:+/-而不是>/<。
  • 在实际不同的行之前和之后的几行上下文。

但我不确定这些是唯一的变化。其他的是什么以及git传递给diff以实现默认输出的命令行参数?如果我想要比较a.txtb.txt并以git制作diff文件的方式进行比较,我应该使用哪个命令行?

回答

2

Git不使用默认* nix或GNU diff,但实现了自己的差异算法。

该代码,这是主要分布在文件中Git source treebuiltin/diff.cbuiltin/diff-tree.cbuiltin/diff-index.cbuiltin/diff-files.c

因此,它可以做一些花哨的事情,如先进的文字差异和所有平台的可靠实施。

它可以生成的默认(基于行的)统一差异格式补丁与格式的大多数其他实例兼容。 IIRC,GNU diff(还是补丁?)还增加了一些Git放入diff的额外容差,以便在应用git生成的补丁时更加灵活。

+0

我可以在版本控制之外使用'git'的'diff'实现来查找两个任意文件的差异吗? – Septagram

+2

Huhn。事实证明,你可以(我第一次以为你不能)。 'git diff - $ FILEA $ FILEB'好像在git repos之外也能正常工作 - 当然,必须安装git –