git diff
与 相关吗diff
?
是
git diff
基于diff
?是的命令行语法
git diff
如同的那个diff
?学习其中一项对使用另一项有很大帮助吗?他们的输出文件遵循相同的格式吗?它们可以同时被
git patch
和使用吗patch
? (有吗git patch
?与 有何关系patch
?)
谢谢。
答案1
文件格式是可互操作的。 Git 使用最好的格式,diff -u
.它还对其进行了扩展以表示其他类型的更改。
相当于patch
是git apply
.它暂存索引中的更改并将其应用到工作树。
我记得git apply
比 更严格patch
,尽管参考文档似乎没有进行明确的比较。它确实提到了几个可以启用或禁用的测试/错误。
参考文档还建议它可以用作“GNU 补丁的替代品”——即使在 git 存储库之外,如果您使用某个选项的话。
答案2
git-diff 提供了比 diff 更多的功能,我不认为输出补丁是可互操作的(没有一些附加选项),因为 diff 会生成类似的行
diff -ruNa dir1/file1.txt dir2/file1.txt
而 git-diff 会生成类似这样的行
diff --git a/dir1/file1.txt b/dir2/file1.txt
(注意源和目标前缀,可使用--no-prefix
和不同选项切换)
以下是 git-diff 的一些附加功能:
可以记录移动/重命名的文件,同时差异不能
使用递归模式、统一差异并默认处理新文件/已删除文件 (
diff -ruN
)支持不同的算法来查找差异
支持 git 二进制补丁,将二进制数据编码为 ASCII