сбой git mergetool
после слияния я хочу использовать git mergetool для решения проблемы, но это не удается с любым инструментом, который я указываю:
git mergetool merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis bc3 vimdiff emerge Merging: main.c Normal merge conflict for 'main.c': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (kdiff3): merge of main.c failed
инструмент, который я указываю, похоже, вообще не запускается.
выход
git config --list
merge.tool=kdiff3 core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true
2 ответов
kdiff3
может не установлен в вашей системе. Если это так, пожалуйста, проверьте, доступен ли он через ваш PATH
переменная
попробовать
git config --global merge.tool <your_merge_program>
кроме того, вы можете указать свою операционную систему и доступные программы слияния
обратите внимание, что git 2.10 предложит лучший статус выхода для идентификации проблемы установки инструмента diff/merge.
посмотреть совершить 45a4f5d (15 авг 2016) by Иоанн Учета (johnkeeping
).
(слитый Junio C Hamano -- gitster
-- на совершить 331f06d, 19 авг 2016)
difftool
: всегда соблюдайте коды выхода с фатальной ошибкойна данный момент difftool " код выхода доверия" логика всегда подавляет состояние выхода утилиты diff, которую мы вызываем.
Это полезно, потому что мы не хотим выходить только потому, что diff вернул "1", потому что файлы отличаются, но это сбивает с толку, если оболочка возвращает ошибку, потому что выбранная утилита diff не найдена.в POSIX
- 127 как статус выхода для"
command not found
",- 126 для "
command found but is not executable
" и- значения больше 128, если команда завершена, потому что она получила сигнал
по крайней мере, bash и dash следуют этой спецификации, в то время как утилиты diff обычно используют "
1
" для статуса выхода мы хотим игнорировать.обрабатывать любое значение 126 или больше как специальное значение, указывающее, что произошла какая-то фатальная ошибка.