Как Вы отменяете внешнюю разность мерзавца?

У меня есть установка энергии как мой внешний различный инструмент:

[diff]
        external = git_diff_wrapper

#!/bin/sh

vimdiff "$2" "$5"

Скажите, что у меня есть 300 файлов, которые были изменены; через удар я ввожу "разность мерзавца". Это запускает 300 vimdiffs последовательно, как я прерываю его?

16
задан VonC 7 May 2010 в 06:29
поделиться

2 ответа

Если остановки процесса недостаточно, более эффективным может быть уничтожение самой оболочки (в которой вы запустили git diff ).

http://trick.vanstaveren.us/wp/wp-uploads/2009/06/close-this-window.png


См. Также Git Diff с Vimdiff

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 работать как пейджер
4
ответ дан 30 November 2019 в 21:45
поделиться

Просто завершите родительский процесс. Откройте терминал, используйте pstree -p , чтобы найти идентификатор (PID) процесса git , затем kill -9 it. В моей системе это выглядит примерно так:

$ pstree -p
...
        ├─gnome-terminal(20473)─┬─bash(10302)───git(10331)───pager(10332)
...
$ kill -9 10331

Не совсем элегантно, но работает. В вашей системе пейджер , вероятно, будет чем-то другим, но у него будет git в качестве родительского процесса.

2
ответ дан 30 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: