В Git, в чем разница между оригиналом-хозяином и хозяином происхождения?

Я знаю, origin - это термин для удаленного репозитория, а master - это ветка.

Я намеренно опускаю "контекст" здесь, и я надеюсь, что ответ не должен зависеть от контекста. Итак, в командных строках git какая разница между origin/master и основным хозяином. Существует ли какой-либо двусмысленный способ понять, когда использовать origin/master, и когда я должен использовать главный хозяин?

Ответ 1

Здесь на самом деле три вещи: origin master - две отдельные вещи, а origin/master - это одно. Всего три вещи.

Две ветки:

  • master является локальной ветвью
  • origin/master является удаленной ветвью (которая является локальной копией ветки с именем "master" на удаленном носителе с именем "origin" )

Один пульт:

  • 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.