Имя ветки конфликтует при нажатии

Что, как мне кажется, я знаю

Когда я клонирую или извлекаю данные из удаленного репозитория, к имени удаленного репозитория добавляются имена веток, импортированных из этого удаленного хранилища.
Например, если удаленный репозиторий называется origin в моем репозитории, то после клонирования удаленного репозитория master ветка называется origin/master в моем репозитории.

Такое поведение гарантирует, что между импортированными ветвями и ветвями, которые уже существуют в моем репозитории, никогда не возникнет конфликта имен (независимо от того, были ли они созданы локально или импортированы из других репозиториев).

Чего я не знаю (т. е. моего вопроса)

Когда я отправляю в удаленный репозиторий, добавляется ли префикс имени моего репозитория (в удаленном репозитории) к именам веток, которые отправляются?

Если нет, то как избежать конфликтов имен ветвей?


person Evan Aad    schedule 07.04.2017    source источник
comment
Конфликтов имен веток нельзя избежать, в чем вы можете убедиться, создав ветки с одинаковыми именами в двух местах и ​​попытавшись отправить их на один и тот же удаленный сервер. См., например. stackoverflow.com/questions/31631726/ и stackoverflow.com/questions/17359978/ для получения дополнительной информации о отдельные локальные и удаленные филиалы.   -  person jonrsharpe    schedule 07.04.2017


Ответы (1)


Что я думаю, что знаю

Когда я клонирую или извлекаю из удаленного репозитория, имя удаленного репозитория предваряется именами веток, импортированных из этого удаленного хранилища.

Например, если в моем репозитории удалённая ветка называется origin, то после клонирования главная ветвь удалённой ветки будет называться origin/master в моём репозитории.

Это не совсем так.
Когда вы клонируете репозиторий git, git вы получаете ссылку на все ветки, но извлекается только основная

введите здесь описание изображения

Каждый раз, когда вы оформляете ветку, git добавляет к ней ветку track.

введите здесь описание изображения

Когда я отправляю в удаленный репозиторий, добавляется ли префикс имени моего репозитория (в удаленном репозитории) к именам веток, которые отправляются?

Всякий раз, когда вы вводите push git, используйте внутренний механизм под названием refspec

refspec

Формат refspec – необязательный +, за которым следует <src>:<dst>, где <src> – это шаблон для ссылок на удаленной стороне, а <dst> – место, где эти ссылки будут записываться локально.
Знак + указывает Git обновить ссылку, даже если это не ускоренная перемотка вперед.

Дополнительная литература:
https://www.atlassian.com/git/tutorials/refs-and-the-reflog#refspecs

person CodeWizard    schedule 08.04.2017