Подтвердить что ты не робот

Что делает diff.mnemonicprefix?

Я заметил, что 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 сравнивает a (c) ommit и (i) ndex;

git diff HEAD:file1 file2 сравнивает объект (o) bject и объект (w) ork tree;

git diff --no-index a b сравнивает две не-w23 вещи (1) и (2).

Я все еще не понимаю, что это значит. Может кто-нибудь объяснить?

4b9b3361

Ответ 1

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 используются для указания вашего индекса и рабочей копии соответственно.

Аналогичным образом работают другие случаи, перечисленные в документации.