`git diff` 与 `diff` 相关吗?

Tim*_*Tim 6 diff git

git diff有关diff

  1. git diff基于diff?

  2. 的命令行语法git diff类似于那个的diff?学习一种对使用另一种有很大帮助吗?

  3. 它们的输出文件是否遵循相同的格式?它们可以同时被git patch和 使用patch吗?(有git patch吗?和 有什么关系patch?)

谢谢。

sou*_*edi 9

文件格式是可互操作的。Git 使用最好的格式,diff -u. 它还扩展它以表示其他类型的更改。

相当于patchgit apply。它暂存索引中的更改并将它们应用到工作树。

我记得git apply比 更严格patch,尽管参考文档似乎没有进行明确的比较。它确实提到了几个可以启用或禁用的测试/错误。

参考文档还建议它可以用作“GNU 补丁的替代品”——即使在 git 存储库之外,如果您使用某个选项。


qwr*_*qwr 5

git-diff 提供了比 diff 更多的功能,我不认为输出补丁是可互操作的(没有一些附加选项),因为 diff 会生成类似的行

diff -ruNa dir1/file1.txt dir2/file1.txt
Run Code Online (Sandbox Code Playgroud)

而 git-diff 会生成类似这样的行

diff --git a/dir1/file1.txt b/dir2/file1.txt
Run Code Online (Sandbox Code Playgroud)

(注意源和目标前缀,可使用--no-prefix和不同选项切换)

以下是 git-diff 的一些附加功能:

  • 可以记录移动/重命名的文件,而diff 不能

  • 使用递归模式、统一差异并默认处理新文件/已删除文件 ( diff -ruN)

  • 支持不同的算法来查找差异

  • 支持 git 二进制补丁,将二进制数据编码为 ASCII