git-mergetool
делает много, вы можете прочитать источник, чтобы узнать, что он делает .Это всего лишь сценарий оболочки, и вы потенциально можете воспроизвести то, что он делает.Но гораздо проще воспользоваться всей этой работой и написать свой собственный mergetool.
Из документации git-mergetool ...
Вместо запускаgit mergetool, одну из известных программ инструментов слияния, можно настроить для запуска альтернативной программы, указав командную строку для вызова в переменной конфигурации mergetool..cmd.
Когда git mergetool вызывается с помощью этого инструмента (либочерез опцию -t или --tool или переменную конфигурации merge.tool) сконфигурированная командная строка будет вызываться с $ BASE, установленным на имя временного файла, содержащего общую базу для слияния, если доступно;$ LOCAL - имя временного файла, содержащего содержимое файла в текущей ветви;Для $ REMOTE задано имя временного файла, содержащего содержимое файла, который должен быть объединен, а для $ MERGED задано имя файла, в который инструмент слияния должен записать результат разрешения слияния.
Напишите небольшой сценарий оболочки, поместите его в переменную PATH и сделайте его исполняемым.Обязательно выйдите с ненулевым значением, чтобы указать, что объединение «не удалось».
$ cat ~/bin/show-git-mergefiles
#!/bin/sh
echo Base: $1
echo Local: $2
echo Remote: $3
echo Merged: $4
exit 1
Затем добавьте его в .gitconfig
и передайте переменные среды.
[mergetool "show-git-mergefiles"]
cmd = show-git-mergefiles $BASE $LOCAL $REMOTE $MERGED
trustExitCode = true
ИБоб - брат твоих родителей.
$ git mergetool -t show-git-mergefiles
Merging:
file2
Normal merge conflict for 'file2':
{local}: modified file
{remote}: modified file
Base: ./file2_BASE_84551
Local: ./file2_LOCAL_84551
Remote: ./file2_REMOTE_84551
Merged: file2
merge of file2 failed
Continue merging other unresolved paths [y/n]?
Перед тобой подумай, если существующий инструмент слияния делает то, что ты хочешь.Например, vimdiff .
aldsfkalkd | aldsfkalkd | aldsfkalkd
ldfkjlj | ldfkjlj | ldfkjlj
another line | | feature line
---------------------| ---------------------| ----------------------
---------------------| ---------------------| ----------------------
---------------------| ---------------------| ----------------------
---------------------| ---------------------| ----------------------
~ | ~ | ~
~ | ~ | ~
~ | ~ | ~
./file2_LOCAL_82335 ./file2_BASE_82335 ./file2_REMOTE_82335
aldsfka
ldfk
<<<<<<< HEAD
another line
=======
feature line
>>>>>>> feature
~
~
~
~
file2