`git add --patch` с `--word-diff`

git add --patch предоставляет отличный интерфейс для просмотра неустановленных изменений, а затем для подготовки только тех изменений, которые нужны для следующего коммита.

Отлично, за исключением одного: нет очевидного способа выбрать, какое diff представление использовать.

В частности, я хотел бы иметь возможность настроить git add --patch для представления различий так же, как это делает git diff --word-diff.

Как я могу этого добиться?

(Примечание: ни --word-diff, ни --word-diff --color не совпадают с --color-words, поэтому этот вопрос (и его ответ) отличается от этот вопрос и ответы на него. Однако этот вопрос ответы гораздо более исчерпывающие, чем этот, так что, вероятно, это место, где можно найти дополнительную информацию о том, как добиться подобных вещей.)


person Community    schedule 01.03.2018    source источник
comment
Возможный дубликат Как использовать --color-words с git add --патч?   -  person phd    schedule 02.03.2018
comment
@phd, спасибо. Это похоже, но не то же самое. Я сейчас это уточнил.   -  person    schedule 02.03.2018
comment
Дубликат: stackoverflow.com /вопросы/49278577/ . Пожалуйста, посмотрите на ответы там.   -  person Zorglub29    schedule 01.04.2020


Ответы (1)


Это возможно следующим образом:

git -c interactive.diffFilter="git diff --word-diff --color" add --patch

Однако то, что показывает вам Git и что на самом деле будет подготовлено в результате ваших интерактивных команд, не обязательно будет соответствовать.

person Community    schedule 01.03.2018
comment
Это больше не работает в git 2.17+ и не работает с fatal: mismatched output from interactive.diffFilter hint: Your filter must maintain a one-to-one correspondence hint: between its input and output lines. - person Olivier Le Floch; 08.09.2018
comment
@OlivierLeFloch, я понимаю, что это временная мера, позволяющая избежать скрытого появления ошибок. В долгосрочной перспективе, конечно, очень желательны средства для достижения безошибочного git add --patch --word-diff. - person ; 08.09.2018
comment
На самом деле я еще немного поработал над этим и подробно описал решение здесь: stackoverflow.com/a/52231087/163677 с использованием interactive.diffFilter и diff-highlight . - person Olivier Le Floch; 11.09.2018