Могу ли я переименовать LOCAL, REMOTE и BASE, как они используются в git mergetool?
-
22-09-2019 - |
Вопрос
Допустим, я делаю перебазирование ветки B на master, и возникает конфликт.git открывает инструмент слияния по умолчанию с тремя входными файлами:file.LOCAL, file.BASE, file.REMOTE (они называются немного по-другому, но LOCAL, BASE и REMOTE присутствуют в именах файлов и по этому их различают).
Теперь, согласно справочной странице mergetool:В $LOCAL указывается имя временного файла, содержащего содержимое файла текущей ветки;Для $REMOTE задано имя временного файла, содержащего содержимое файла, подлежащего слиянию, а для $BASE задано имя временного файла, содержащего общую базу для слияния.
Для меня это действительно не имеет смысла.LOCAL — текущее состояние ветки.Где я теряюсь, так это БАЗОВЫЙ и УДАЛЕННЫЙ.Итак, мой вопрос:
Можно ли заставить git использовать имя ветки вместо LOCAL и аналогичные более значимые имена, кроме BASE и REMOTE?Например, если имя ветки — FeatureX, а BASE = файл в том виде, в каком он существует в master, есть ли способ заставить git заменить FeatureX на LOCAL и master на BASE, чтобы было более очевидно, откуда берется источник ?Это особенно проблема при выполнении перебазирования.
Решение
Можно ли заставить git использовать имя ветки вместо LOCAL?
Я так не думаю, но если вы объявите в своем mergetool графический инструмент слияния, вы можете вызвать этот внешний инструмент с названием по вашему выбору:
(фрагмент сценария вызова инструмента слияния)
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"
Таким образом, вам будет легче увидеть, что есть что.
Другие советы
Я не совсем уверен, что это объяснение верно, но BASE будет точкой, в которой обе версии файла будут одинаковыми.Это может быть то, что вы называете «родителем» в дереве Git.
Когда они разошлись, у вас получились LOCAL и REMOTE, которые конфликтуют друг с другом.