1

diff我想知道由和创建的文件/补丁的格式有什么区别git-diff
我知道diff有 3 个(“普通”,“紧凑”-c一个和“统一”-u一个)。

但是,可能存在一些差异,并且在某些情况下您无法自由交换git diffdiff。所以:

  1. 这取决于您是否可以使用git diffdiff对于同一个文件?
  2. 格式之间有什么区别?
  3. 如果您无法交换命令(请参阅 1.),您如何将文件转换为其他格式,以便您可以将它们与其他命令一起使用?
  4. 如果您可以交换命令(请参阅 1.):甚至建议这样做吗?
  5. 这两个命令创建的文件是否还有其他显着差异?
4

1 回答 1

2
  1. 这取决于您是否可以使用git diffdiff对于同一个文件?

简单地说,如果该文件位于 git repo 工作树中,那么您就可以git diff用来显示该文件的更改(针对 git repo 引用的同一文件,如索引或 blob 对象)。
这与 ' diff' 不同,后者比较文件(这意味着您需要两个文件,而在 git 存储库中使用时,不仅仅是 git diff 中的一个)

正如hvd在评论中指出的那样:

您可以git diff在任何工作树之外使用并传递两个文件
因此,您git diff几乎可以在任何可以使用的情况下使用diff.
反过来是不正确的

 git diff --color-words --no-index file1 file2

  1. 格式之间有什么区别?

git diff可以模拟任何差异格式(统一,原始,...)。
它也具有特定于 git 的格式 ( --summary, --stat, ...)

也可以看看:

Agit diff将包含一个带有“相似性索引”的 git 标头。
每个 diff 块的大块显示与 diff -u 非常相似


  1. 如果您无法交换命令(请参阅 1.),您如何将文件转换为其他格式,以便您可以将它们与其他命令一起使用?

您可以将 a 转换为git diff原始格式,或使用 raw: 进行修补--patch-with-raw
反过来也是可能的:您可以将 diff 应用于 git repo


  1. 如果您可以交换命令(请参阅 1.):甚至建议这样做吗?

如果您没有安装 git(请参阅前面的示例


  1. 这两个命令创建的文件是否还有其他显着差异?

否:应用由 adiff或 a生成的补丁的结果git diff应该相同。

于 2015-11-15T10:35:36.033 回答