diff.mnemonicprefix有什么作用?

时间:2015-01-19 02:46:10

标签: git

我注意到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)。

我仍然不明白这意味着什么。有人可以解释一下吗?

1 个答案:

答案 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/区分文件的方式。这是非助记符;字符ab没有实际意义。

启用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

代替。字符iw分别用于表示索引和工作副本。

文档中列出的其他案例的工作方式类似。