В Git, в чем разница между оригиналом-хозяином и хозяином происхождения?
Я знаю, origin - это термин для удаленного репозитория, а master - это ветка.
Я намеренно опускаю "контекст" здесь, и я надеюсь, что ответ не должен зависеть от контекста. Итак, в командных строках git какая разница между origin/master и основным хозяином. Существует ли какой-либо двусмысленный способ понять, когда использовать origin/master, и когда я должен использовать главный хозяин?
Ответы
Ответ 1
Здесь на самом деле три вещи: origin master
- две отдельные вещи, а origin/master
- это одно. Всего три вещи.
Две ветки:
-
master
является локальной ветвью
-
origin/master
является удаленной ветвью (которая является локальной копией ветки с именем "master" на удаленном носителе с именем "origin" )
Один пульт:
Пример: выполнить два шага
Так как origin/master
- ветвь, вы можете объединить ее. Здесь тянуть в два этапа:
Шаг первый, выберите master
с удаленного устройства origin
. Откроется ветвь master
на origin
, а локальная копия будет называться origin/master
.
git fetch origin master
Затем вы объединяете origin/master
в master
.
git merge origin/master
Затем вы можете изменить свои новые изменения в master
на origin
:
git push origin master
Дополнительные примеры
Вы можете получить несколько ветвей по имени...
git fetch origin master stable oldstable
Вы можете объединить несколько ветвей...
git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290
Ответ 2
origin/master
- это объект (поскольку он не является физической ветвью), представляющий состояние master
ветки на удаленном origin
.
origin master
- это master
ветки на удаленном origin
.
Итак, у нас есть эти,
- origin/master (представление или указатель на удаленную ветку)
- мастер - (фактический филиал)
- (фактическая ветвь)
- (фактическая ветвь)
- (фактическая ветвь)
Пример (в локальной ветке master
):
git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master
Ответ 3
origin/master
- удаленная ветвь master
Обычно после выполнения git fetch origin
для внесения всех изменений с сервера вы должны сделать git rebase origin/master
, чтобы переустановить изменения и переместить ветвь в последний индекс. Здесь origin/master
относится к удаленной ветке, потому что вы в основном говорите GIT, чтобы перегрузить ветвь origin/master
на текущую ветку.
Вы использовали бы origin master
при нажатии, например. git push origin master
просто сообщает GIT нажать на удаленный репозиторий локальный ветвь master
.
Ответ 4
origin - это имя для удаленного URL git.
Здесь может быть еще несколько примеров пропусков.
bangalore => bangalore.example.com:project.git
boston => boston.example.com:project.git
в том, что касается origin/master (например, bangalore/master), это указатель на "master" commit на сайте bangalore.
Вы видите это в своем клоне.
Возможно, удаленный бэндалор продвинулся с тех пор, как вы выполнили "выборку" или "вытащить"
Ответ 5
Учитывая тот факт, что вы можете переключиться на origin/master
(хотя в отключенном состоянии) при отключенном сетевом кабеле, это должно быть локальное представление ветки master
на origin
.