В Git, в чем разница между источником / мастером и мастером происхождения?

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

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

7 ответов

Решение

Здесь на самом деле есть три вещи: 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

origin/master является местным отделением, представляющим состояние master филиал на пульте origin,

origin master это филиал master на пульте origin,

Пример (в местном филиале 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

origin/master это пульт master ветка

Обычно после выполнения git fetch origin чтобы принести все изменения с сервера, вы должны сделать git rebase origin/master, чтобы отменить ваши изменения и переместить ветку к последнему индексу. Вот, origin/master ссылается на удаленную ветку, потому что вы в основном говорите GIT перебазировать origin/master перейти на текущую ветку.

Вы бы использовали origin master при нажатии, например. git push origin master просто говорит GIT нажать на удаленный репозиторий локальный master ветка.

Учитывая тот факт, что вы можете переключиться на origin/master (хотя и в отключенном состоянии) при отключенном сетевом кабеле он должен быть локальным представлением master филиал в origin,

Прежде чем перейти к различию, нам нужно понять, что означает origin в Git.

origin - это не что иное, как исходное имя, данное удаленному репозиторию. Origin - это просто место, вот и все. В приведенном ниже примере URL-адрес репозитория является источником или источником достоверной информации о том, где находится ваш код.

git clone

теперь это происхождение или источник истины для вашего репозитория может иметь ветки, включая master или development, или вы называете это.

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

  1. origin master : я являюсь основной веткой, находящейся в удаленном репозитории, который называется (origin).

Что произойдет, если я наберу git pull origin master ?.

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

Теперь я хотел бы, чтобы мои изменения были объединены с моей локальной главной веткой, как я могу этого добиться?

git merge origin / master

Это обновит мою локальную главную ветку с моими изменениями. Причина наличия origin / master - это просто соглашение об именах, которое вы могли бы назвать своей локальной главной веткой origin / master или abcd. Таким образом, вы могли бы назвать свою локальную ветвь вместо origin / master, чтобы просто master, а команда для git была бы git merge master .

Как мне обновить удаленную главную ветку со всеми локальными изменениями?

git push origin master

Эта команда говорит, что отправьте все мои локальные изменения в источник (т.е. репозиторий (https://github.com/mycode/git-awsomecode.githttps://github.com/mycode/git-awsomecode.git )) в главную ветку.

origin - это имя для удаленного git url. Пример может быть намного больше удаленных ниже.

bangalore => bangalore.example.com:project.git

boston => boston.example.com:project.git

что касается origin/master (например, bangalore / master), это указатель на "master" commit на сайте bangalore. Вы видите это в своем клоне.

Возможно, что удаленный Бангалор продвинулся, так как вы сделали "выборку" или "тянуть"

Я предлагаю объединить разработку и мастер с этой командой

git checkout master

git merge --commit --no-ff --no-edit develop

Для получения дополнительной информации посетите https://git-scm.com/docs/git-merge.

Другие вопросы по тегам