我注意到SourceTree使用以下配置选项执行git命令:
git -c diff.mnemonicprefix=false
这是git docs对此选项的说法:
diff.mnemonicprefix
如果设置, git diff 使用的前缀对不同于标准" a /"和" b /"取决于所比较的内容。当此配置生效时,反向差异输出也会交换前缀的顺序:
git diff
比较(i)ndex和(w)ork树;
git diff HEAD
比较(c)ommit和(w)ork树;
git diff --cached
比较(c)ommit和(i)ndex;
git diff HEAD:file1 file2
比较(o)bject和(w)ork树实体;
git diff --no-index a b
比较两个非git的东西(1)和(2)。
我仍然不明白这意味着什么。有人可以解释一下吗?
答案 0 :(得分:32)
git diff
显示有关其正在比较的文件的一些元数据。通常你可能会看到这样的东西:
diff --git a/foo/bar.txt b/foo/bar.txt <--
index abcd123..1234abc 100644
--- a/foo/bar.txt <--
+++ b/foo/bar.txt <--
请注意在我用箭头指示的三行上使用a/
和b/
区分文件的方式。这是非助记符;字符a
和b
没有实际意义。
启用diff.mnemonicprefix
后,将按照您引用的文档中的说明选择这些字符。例如,如果您对本地副本进行了更改并与索引进行比较(例如使用git diff
),您会看到类似
diff --git i/foo/bar.txt w/foo/bar.txt
index abcd123..1234abc 100644
--- i/foo/bar.txt
+++ w/foo/bar.txt
代替。字符i
和w
分别用于表示索引和工作副本。
文档中列出的其他案例的工作方式类似。