Конфигурирование diff инструмента с помощью.gitconfig
Как настроить Git на использование другого инструмента для сравнения с файлом.gitconfig?
У меня есть это в моем.gitconfig:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
Это не работает; он просто открывает обычную командную строку diff. Когда я делаю
export GIT_EXTERNAL_DIFF=git-chdiff
затем git diff
откроет внешний инструмент сравнения (так что я знаю, что скрипт внешнего инструмента сравнения работает нормально). У меня что-то не так с моей конфигурацией.gitconfig для инструмента сравнения?
11 ответов
Git предлагает ряд предварительно настроенных difftools "из коробки" (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge и araxis), а также позволяет вам указать свой. Чтобы использовать один из предварительно настроенных difftools (например, "vimdiff"), вы добавляете следующие строки в ваш ~/.gitconfig
:
[diff]
tool = vimdiff
Теперь вы сможете запускать "git difftool" и использовать свой инструмент по своему выбору.
С другой стороны, для задания собственного difftool требуется немного больше работы, см. Как просмотреть вывод 'git diff' с помощью моего предпочтительного инструмента / средства просмотра diff?
Дополнительный способ сделать это (из командной строки):
git config --global diff.tool tkdiff
git config --global merge.tool tkdiff
git config --global --add difftool.prompt false
Первые две строки установят difftool и mergetool в tkdiff
- измените это в соответствии с вашими предпочтениями. Третья строка отключает раздражающий запрос, поэтому всякий раз, когда вы нажимаете git difftool
он автоматически запустит difftool.
Другие ответили на этот вопрос на 99%, но остался один шаг. (Мой ответ будет исходить из OS X, поэтому вам придется соответствующим образом изменить пути к файлам.)
Вы вносите эти изменения в свой ~/.gitconfig
:
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE
Это исправит инструмент сравнения. Вы также можете это исправить, не редактируя ~/.gitconfig
непосредственно введя эти команды из терминала:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge \$LOCAL \$REMOTE"
1%, о которых все остальные не упомянули, это когда вы не можете просто запустить git diff myfile.txt
; тебе нужно бежать git difftool myfile.txt
,
Воспроизведение моего ответа из этой темы, который был более специфичен для настройки, чем сравнение в качестве инструмента сравнения для Git. Все детали, которыми я поделился, одинаково полезны для любого инструмента сравнения в целом, поэтому поделитесь им здесь:
Первая команда, которую мы запускаем, выглядит так:
git config --global diff.tool bc3
Приведенная выше команда создает следующую запись в .gitconfig
нашел в %userprofile%
каталог:
[diff]
tool = bc3
Затем вы запускаете команду ниже (Выполнение этой команды является избыточным в данном конкретном случае и требуется только в некоторых специализированных случаях. Вы узнаете об этом в ближайшее время):
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"
Команда выше создает запись ниже .gitconfig
файл:
[difftool "bc3"]
path = c:/program files/Beyond Compare 3/bcomp.exe
Здесь важно знать bc3
, Это хорошо известный ключ для git, соответствующий определенной версии известных инструментов сравнения, доступных на рынке (bc3
соответствует 3-й версии инструмента Beyond Compare). Если вы хотите увидеть все предопределенные ключи, просто запустите git difftool --tool-help
команда на git bash. Это возвращает ниже список:
vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Вы можете использовать любой из вышеперечисленных ключей или определить свой собственный ключ. Если вы хотите полностью настроить новый инструмент (или недавно выпущенную версию известного инструмента), который не сопоставляется ни с одним из перечисленных выше ключей, вы можете сопоставить его с любым из перечисленных выше ключей или с новым ваш собственный ключ.
Что делать, если вам нужно настроить инструмент сравнения, который
- Абсолютно новый на рынке
ИЛИ ЖЕ
- Выпущена новая версия существующего хорошо известного инструмента, который не сопоставлен ни с какими предопределенными ключами в git?
Как и в моем случае, я установил "вне сравнения 4". "Вне сравнения" - это хорошо известный инструмент для git, но его версия 4 по умолчанию не сопоставлена ни с одним из существующих ключей. Таким образом, вы можете следовать любому из следующих подходов:
Я могу сопоставить инструмент сравнения 4 с уже существующим ключом
bc3
что соответствует вне всякого сравнения 3 версии. У меня не было превосходной версии 3 на моем компьютере, поэтому мне было все равно. Если бы я хотел, я мог бы сопоставить его с любым из предварительно определенных ключей в приведенном выше списке, например,examdiff
,Если вы сопоставите хорошо известную версию инструментов с соответствующим уже существующим / хорошо известным ключом, вам не нужно будет запускать вторую команду, так как их путь установки уже известен git.
Например, если я установил некоммерную версию 3 на свою коробку, то в моей конфигурации ниже
.gitconfig
файла было бы достаточно, чтобы начать работу:[diff] tool = bc3
Но если вы хотите изменить связанный с ним инструмент по умолчанию, то в конечном итоге вы упомянули
path
Атрибут отдельно, чтобы git узнал путь, с которого должен запускаться исполняемый файл вашего нового инструмента. Вот запись, которую лисы запускают за пределами сравнения 4. Обратите внимание на путь exe:[difftool "bc3"] path = c:/program files/Beyond Compare 4/bcomp.exe
Самый чистый подход - полностью определить новый ключ для нового инструмента сравнения или новой версии известного инструмента. Как и в моем случае, я определил новый ключ
bc4
так что это легко запомнить. В таком случае вам нужно выполнить всего две команды, но ваша вторая команда не будет устанавливать путь к исполняемому файлу вашего нового инструмента. Вместо этого вы должны установитьcmd
атрибут для вашего нового инструмента, как показано ниже:git config --global diff.tool bc4 git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\""
Запуск выше команд создает ниже записи в вашем
.gitconfig
файл:[diff] tool = bc4 [difftool "bc4"] cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\"
Я настоятельно рекомендую вам следовать подходу № 2, чтобы избежать путаницы в будущем.
Вот часть моего ~/.gitconfig, где я настраиваю инструменты сравнения и слияния. Мне нравится diffmerge от SourceGear. (Мне очень очень нравится, на самом деле).
[merge]
tool = diffmerge
[mergetool "diffmerge"]
cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
trustExitCode = false
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
Итак, вы видите, вы определяете инструмент с именем "diffmerge" в [difftool "diffmerge"]
линия. Затем я устанавливаю инструмент "Diffmerge" в качестве значения по умолчанию в [diff] tool =
раздел.
У меня, очевидно, есть команда "diffmerge" на моем пути, здесь. В противном случае мне нужно будет указать полный путь к исполняемому файлу.
Добавление одного из блоков ниже помогает мне использовать KDiff3 для моей среды разработки Windows и Linux. Это делает для хорошего последовательного межплатформенного инструмента сравнения и слияния.
Linux
[difftool "kdiff3"]
path = /usr/bin/kdiff3
trustExitCode = false
[difftool]
prompt = false
[diff]
tool = kdiff3
[mergetool "kdiff3"]
path = /usr/bin/kdiff3
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = kdiff3
Windows
[difftool "kdiff3"]
path = C:/Progra~1/KDiff3/kdiff3.exe
trustExitCode = false
[difftool]
prompt = false
[diff]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/Progra~1/KDiff3/kdiff3.exe
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = kdiff3
Если вы хотите иметь возможность использовать несколько инструментов сравнения, добавьте псевдоним.gitconfig
[alias]
kdiff = difftool --tool kdiff3
Обратитесь к Microsoft https://github.com/Microsoft/vscode-tips-and-tricks. Просто запустите эти команды в вашем терминале:
git config --global merge.tool code
почти все вышеперечисленные решения не работают с git версии 2
мой: git version = 2.28.0
решение difftool: git config --global diff.tool vimdiff
после этого можно без проблем пользоваться
В Windows нам нужно запустить $git difftool --tool-help
команда, чтобы увидеть различные параметры, например:
'git difftool --tool=<tool>' may be set to one of the following:
vimdiff
vimdiff2
vimdiff3
The following tools are valid, but not currently available:
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Some of the tools listed above only work in a windowed
environment. If run in a terminal-only session, they will fail.
и мы можем добавить любой из них (например, winmerge), например
$ git difftool --tool=winmerge
Чтобы настроить notepad++ для просмотра файлов перед фиксацией:
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
и используя $ git commit
откроет информацию о фиксации в блокноте ++
Использоватьgit config --global diff.external git-chdiff
вместоgit config --global diff.tool git-chdiff
.