происхождение / мастер слияния не работает должным образом - PullRequest
1 голос
/ 10 апреля 2019

Мое понимание использования origin как части пути в git состоит в том, что вы имеете дело с серверной версией кода;в результате (за исключением конфликтов и т. д.) я ожидал бы, что следующие два набора команд будут вести себя одинаково (предположим, что моя ветвь в mytestbranch начинается с проверенной этой ветки):

git checkout master
git pull
git checkout mytestbranch
git merge master

И более кратко:

git merge origin/master

Однако может показаться, что origin / master не всегда получает последнюю версию с сервера.Я неправильно понимаю, для чего это нужно?

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

origin/<branch> просто содержит удаленный контент, поскольку в последний раз, когда вы fetch редактировали его .

git pull, совпадает с git fetch + git merge origin/<branch> (технически, git merge FETCH_HEAD, см. Здесь ): git fetch обновит ваши удаленные ветви, а git merge origin/master объединит только что выбранные изменения с вашей локальной веткой (я предполагаю, что 'у вас настроены удаленные ветви отслеживания).

Ключевым моментом здесь является то, что только когда вы делаете git fetch или git push (или git pull, как только что объяснено), ваш репозиторий будет подключаться к удаленному,Все остальные операции выполняются локально .

Другое небольшое различие между вашими двумя примерами состоит в том, что git merge origin/master в какой-либо ветви, отличной от главной, объединит последние извлеченные изменения удаленного главного устройства с этой веткой., но он не обновит ваш локальный мастер (вы можете обновлять только локальную ветку, когда она в данный момент извлечена).

Кстати, хороший сайт, чтобы узнать об удаленных и удаленныхветки "графически" - это https://learngitbranching.js.org/?NODEMO. Официальная git документация содержит более подробное объяснение.

0 голосов
/ 10 апреля 2019

origin/master - это удаленное отслеживание ветви.

Его задача - отслеживать состояние удаленной ветви, даже в автономном режиме .Это означает, что каждый раз, когда вы хотите выполнить синхронизацию между реальной удаленной ветвью и изображением, которое вы используете для его представления (рассматриваемая удаленная ветвь, origin/master), вы должны явно делать это с

git fetch

Затем git отправит на ваш пульт запрос об обновленной версии всех веток (если они обновлены или новые).(отметьте документ )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...