Можно ли переименовать LOCAL, REMOTE и BASE, как используется в git mergetool?

Давайте скажем, что я делаю rebase B ветки на хозяине и там конфликт. git открывает инструмент слияния по умолчанию с 3-мя файлами в качестве входных данных: file.LOCAL, file.BASE, file.REMOTE(они называются несколько иначе, но LOCAL, BASE и REMOTE находятся в именах файлов и как они).

Теперь, в соответствии с man-страницей mergetool: $LOCAL устанавливается на имя временного файла, содержащего содержимое файла в текущей ветке; $REMOTE устанавливается на имя временного файла, содержащего содержимое файла для объединения, и $BASE устанавливается на имя временного файла, содержащего общую базу для слияния.

Это действительно не имеет смысла для меня. LOCAL - текущее состояние ветки. Где я заблудился, это BASE и REMOTE. Поэтому мой вопрос:

Можно ли использовать git имя ветки вместо LOCAL и аналогично более значимые имена, отличные от BASE и REMOTE? Например, если имя ветки является FeatureX и BASE = файл, как он существует в master, есть ли способ получить git для замены FeatureX для LOCAL и master для BASE, так что это будет более очевидно там, где источник приходящий из? Это особенно проблема при выполнении rebase.

Ответ 1

Можно ли использовать git имя ветки вместо LOCAL

Я так не думаю, но если вы объявите в своем слиянии графическом инструменте слияния, вы можете вызвать этот внешний инструмент с названием по вашему выбору:

(извлечение инструмента слияния calll script)

t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"

    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 

Таким образом, вы можете более легко увидеть, что к чему.

Ответ 2

Я не совсем уверен, что это объяснение верное, но BASE будет точкой, в которой обе версии файла были одинаковыми. Возможно, это то, что вы называете "родителем" в дереве Git.

Когда они расходились, вы попали в LOCAL и REMOTE, которые противоречат друг другу.