У вас, кажется, есть путаница в ссылках в основных командах Git.И у вас должно быть замешательство, потому что это сбивает с толку.
Локальная ветка master
, которая существует только в вашем локальном репозитории Git, - это то, чем вы занимаетесь большую часть своей реальной работы по разработке.Аналогично, существует также ветвь с именем master
, которая существует на удаленном компьютере.Теперь, для беспорядка, есть третья ветвь, названная origin/master
.Это локальная ветка, которая существует в вашем локальном репо.Он существует главным образом, чтобы служить прокси для истинной удаленной ветви master
.Всякий раз, когда вы синхронизируете с удаленной веткой master
, локально вы фактически используете origin/master
.
Выполнение git pull origin master
фактически идентично этому (при условии, что вы используете стратегию слияния по умолчанию):
git fetch origin
git merge origin/master
Первый шаг, git fetch origin
, обновляет локальную ветвь отслеживания origin/master
с последними изменениями, так что она отражает истинную ветку master
на пульте.Затем он сливается с вашей локальной веткой master
, используя origin/master
.Вот краткое резюме:
master | the master branch (either local or remote)
origin master | the master branch on the remote (as in the git pull command)
origin/master | local tracking branch for master which mirrors the remote version
Итак, учитывая, что origin/master
- это фактическая ветвь, которая отслеживает истинную удаленную ветку master
, мы можем сказать Git использовать origin/master
в качестве отслеживанияпереход через:
# from local master branch
git --set-upstream-to origin/master
Обратите внимание, что если вы создаете или извлекаете master
локально, Git обычно создает origin/master
в качестве ветви отслеживания по умолчанию за кулисами.Таким образом, на практике вам, вероятно, не придется использовать --set-upstream-to
очень часто.