diff和git diff创建的补丁/文件有什么不同?

时间:2015-11-14 20:47:54

标签: git diff git-diff git-patch

我想知道diffgit-diff创建的文件/修补程序的格式有何不同。
我知道在diff中有3个("普通","紧凑" -c一个"统一" {{1一个)。

但是可能存在一些差异,在某些情况下,您无法自由交换-ugit diff。所以:

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

1 个答案:

答案 0 :(得分:2)

  
      
  1. 您是否可以将git diffdiff用于同一个文件?
  2.   

如果文件位于git repo工作树中,那么您将能够使用git diff来显示该文件的更改(针对git repo引用的同一文件,如索引或blob对象)。
这不同于' diff',它会比较文件(意味着你需要两个文件,而不是像git repo中使用的git diff一样)

由于hvd指出in the comments

  

You can use git diff outside any work tree and pass it two files
  因此,您可以在几乎任何可以使用git diff的情况下使用diff   相反的情况并非如此

 git diff --color-words --no-index file1 file2
  
      
  1. 格式之间有什么区别?
  2.   

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

另见:

git diff将包含一个git标题,其中包含"相似性索引"。
每个差异块的帅哥显示为very similar to a diff -u

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

您可以使用原始格式转换git diff,或使用raw:--patch-with-raw进行修补 反之亦然:you can apply a diff to a git repo

  
      
  1. 如果您可以交换命令(参见1.):是否建议这样做?
  2.   

如果您没有安装git(请参阅the previous example

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

否:应用由diffgit diff生成的修补程序的结果应该相同。