Как отменить внешний git diff?
У меня есть настройка vim в качестве внешнего инструмента diff:
[diff]
external = git_diff_wrapper
#!/bin/sh
vimdiff "" ""
скажем, у меня есть 300 файлов, которые были изменены; через bash я набираю "git diff". Он запускает 300 vimdiffs последовательно, как его прервать?
3 ответов
Если остановки процесса недостаточно, убивая саму оболочку (в которой вы запустили git diff
) может быть более эффективным.
см. также git Diff с Vimdiff
не быть готовым идти на полной скорости в использовании
vimdiff
(Я просто новичок в этом), я поставил следующие в ‘gitvimdiff
’.
В результате я могу использоватьvimdiff
посмотреть в git-diff-файл командой ‘gitvimdiff
‘, но обычный вызов ‘git diff
' ведет себя, как я привык.
#!/bin/sh
if [ -n "${GIT_EXTERNAL_DIFF}" ]; then
[ "${GIT_EXTERNAL_DIFF}" = "" ] ||
{ echo “GIT_EXTERNAL_DIFF set to unexpected value” 1>&2; exit 1; }
exec vimdiff “″ “″
else
GIT_EXTERNAL_DIFF=”” exec git –no-pager diff “$@”
fi
но если вы все еще хотите изменен git diff
, a 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 действовал как пейджер
Use: cquit для выхода из vim с кодом ошибки. Git обнаружит ошибку и перестанет открывать новые vimdiffs. Вы, вероятно, захотите создать отображение для него в своем .vimrc:
if &diff
map Q :cquit<CR>
endif
затем просто нажмите Q, чтобы рано прервать запуск git diff.
чтобы это работало, вы должны отредактировать свой gitconfig:
git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true
просто убить родительский процесс. Откройте терминал, используйте pstree -p
чтобы найти идентификатор процесса (PID)