Ответ 1
git add -p
в настоящее время отклоняет флаги diff, но вы можете использовать опцию diff.algorithm
config:
git config --global diff.algorithm patience
Новое в Git 1.8.2.
Я бы хотел использовать алгоритм Git терпения diff (тот, который вы получите, если вы вызываете git diff
с аргументом --patience
) с помощью git add -p
. Как я могу это сделать?
Фон: я работаю с некоторыми XML файлами, а git diff
обычный алгоритм производит довольно плохие различия из-за "несогласованных" тегов ввода/выхода. Если я запустил git diff --patience
, я получаю гораздо более полезные различия, но нет очевидного способа использования этих различий в git add -p
.
git add -p
в настоящее время отклоняет флаги diff, но вы можете использовать опцию diff.algorithm
config:
git config --global diff.algorithm patience
Новое в Git 1.8.2.
Это сработало для меня:
git -c diff.algorithm=patience add -p [...]
Я запускаю последнюю версию git v2.1.0 в Cygwin.
Хмммм... Одна вещь, которую вы могли бы сделать, это вывести вывод git diff
во временное место, а затем прочитать его обратно с помощью git apply
:
git diff --patience <commitA> <commitB> > /tmp/patch.out
# checkout a new branch or otherwise do what you need to prep
git apply < /tmp/patch.out
Это применит вывод diff к рабочему каталогу, но он не будет фиксировать или не выполнять изменения. Затем вы можете запустить git add -p
, как обычно, а diff --patience
- изменения, которые вы добавляете в интерактивном режиме.
Нет причин, по которым вы не могли бы напрямую передать diff
в apply
, если это лучше подходит для вашего рабочего процесса. Это то, что я делаю довольно регулярно, при перестройке собственных локальных веток для интеграции производства.
Похоже, вы также можете использовать его как стратегию слияния , поэтому могло бы быть так, что вместо интерактивного добавления diffs вы могли бы просто создать ветку с что вы хотите, затем объедините его.