В 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, или вы называете это.
Теперь, взяв происхождение в контексте, мы можем легко понять следующие вещи.
- 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.