1

当您调用git diff时,它使用该diff实用程序来比较文件,但是,不是以默认方式。它使用了许多额外的选项,我能说出的一些是:

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

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

4

1 回答 1

4

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

其代码主要位于文件builtin/diff.cbuiltin/diff-tree.cGit 源代码树builtin/diff-index.c中。builtin/diff-files.c

因此,它可以做一些花哨的事情,例如高级 word-diff,并为所有平台提供可靠的实现。

它可以生成的默认(基于行的)统一差异格式补丁与该格式的大多数其他实现兼容。IIRC、GNU diff(或者它是补丁?)还对 Git 放入 diff 中的一些额外内容增加了一些容忍度,以便在应用 git 生成的补丁时更具弹性。

于 2013-04-18T10:50:00.353 回答