У меня есть установка энергии как мой внешний различный инструмент:
[diff]
external = git_diff_wrapper
#!/bin/sh
vimdiff "$2" "$5"
Скажите, что у меня есть 300 файлов, которые были изменены; через удар я ввожу "разность мерзавца". Это запускает 300 vimdiffs последовательно, как я прерываю его?
Если остановки процесса недостаточно, более эффективным может быть уничтожение самой оболочки (в которой вы запустили git diff
).
См. Также Git Diff с Vimdiff
Не будучи готовым к использованию
vimdiff
на полной скорости (я новичок в этом), я поместил следующее в «gitvimdiff
'.
В результате я могу использоватьvimdiff
для просмотра git-diff, запустив 'gitvimdiff
', но обычный вызов 'git diff
'ведет себя как я привык.
#!/bin/sh
if [ -n "${GIT_EXTERNAL_DIFF}" ]; then
[ "${GIT_EXTERNAL_DIFF}" = "${0}" ] ||
{ echo “GIT_EXTERNAL_DIFF set to unexpected value” 1>&2; exit 1; }
exec vimdiff “$2″ “$5″
else
GIT_EXTERNAL_DIFF=”${0}” exec git –no-pager diff “$@”
fi
Но если вам все еще нужен модифицированный git diff
, перед его запуском может помочь git status
;)
И вы можете настроить функцию, чтобы получить старый ] git diff
, если необходимо:
У меня все еще есть доступ к поведению git diff по умолчанию с флагом
- no-ext-diff
. Вот функция, которую я поместил в свои файлы конфигурации bash:
function git_diff() {
git diff --no-ext-diff -w "$@" | vim -R -
}
- no-ext-diff
: для предотвращения использования vimdiff-w
: для игнорирования пробелов-R
: для запуска vim в режиме только для чтения-
: чтобы заставить vim работать как пейджер
Просто завершите родительский процесс. Откройте терминал, используйте pstree -p
, чтобы найти идентификатор (PID) процесса git
, затем kill -9
it. В моей системе это выглядит примерно так:
$ pstree -p
...
├─gnome-terminal(20473)─┬─bash(10302)───git(10331)───pager(10332)
...
$ kill -9 10331
Не совсем элегантно, но работает. В вашей системе пейджер
, вероятно, будет чем-то другим, но у него будет git
в качестве родительского процесса.