git diff --no-index
可用于比较2个任意文件。
我试过如下:
$ git diff --no-index -- /d/a.txt /d/b.txt
diff --git a/D:/a.txt b/D:/b.txt
index 7c4a013..01f02e3 100644
--- a/D:/a.txt
+++ b/D:/b.txt
@@ -1 +1 @@
-aaa
\ No newline at end of file
+bbb
\ No newline at end of file
我认为,因为我正在比较git repo中的2个文件,所以应该与INDEX无关。但是index 7c4a013..01f02e3 100644
是什么意思?
答案 0 :(得分:1)
diff中的index
标头不引用Git索引。相反,它包含preimage文件的(通常是缩写的)对象ID(差异中的“旧文件”),后跟两个点,然后是postimage文件的对象ID(差异中的“新文件”)。 / p>
这通常只是关于差异及其生成方式的信息,它(通常)不用于验证补丁应用程序是否成功,因为补丁的性质是您可以将修补程序应用于其他更改的文件(例如,有效地“挑选”补丁的内容到另一个分支上。)
在应用补丁时,Git 有一个地方验证新对象ID,但是,它应用二进制差异时。与应用包含上下文的文本修补程序以允许它们重新定位并且确实能够应用于其他文件不同,二进制修补程序在翻译完全时只有 preimage到确切的postimage。因此,Git将通过将其哈希值与index
行中显示的哈希值进行比较来验证二进制修补程序是否实际产生了 exact 输出。