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

StackOverflow https://stackoverflow.com/questions/2504493

Вопрос

Допустим, я делаю перебазирование ветки 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, которые конфликтуют друг с другом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top