Обновите локальную ветку с изменениями из отслеживаемой удаленной ветки

104

У меня есть локальная ветка с именем ' my_local_branch', которая отслеживает удаленную ветку origin/my_remote_branch.

Теперь удаленная ветка обновлена, и я нахожусь на " my_local_branch" и хочу внести эти изменения. Должен ли я просто сделать:

git pull origin my_remote_branch:my_local_branch

Это правильный способ?

Skyork
источник

Ответы:

74

Вы установили восходящий поток этой ветки

(увидеть:

git branch -f --track my_local_branch origin / my_remote_branch
# ИЛИ (если my_local_branch в данный момент извлечен):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --trackне будет работать, если ветка извлечена: git branch --set-upstream-to вместо этого используйте вторую команду , иначе вы получите " fatal: Cannot force update the current branch.")

Это означает, что ваша ветка уже настроена :

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

В Git уже есть вся необходимая информация.
В таком случае:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

достаточно.


Если бы вы не установили эту взаимосвязь ветвлений восходящего потока, когда дело дошло до проталкивания вашей ' my_local_branch', тогда git push -u origin my_local_branch:my_remote_branchбыло бы достаточно простого , чтобы протолкнуть и установить ветвь восходящего потока.
После этого для последующих подтягиваний / толчков, git pullиначе git pushбыло бы достаточно.

VonC
источник
OP упоминает, что они уже отслеживают удаленную ветку.
Эмбер
7
@ Янтарь, следовательно, мой ответ: git pullдостаточно.
VonC
Первая команда git branch -f --track master origin/masterвозвращает ошибку:fatal: Cannot force update the current branch.
Марк Крамер
@MarkKramer Да, я отредактировал ответ, чтобы было понятнее, вторая команда должна использоваться, если локальная ветвь в настоящее время проверена.
VonC
Вы также должны изменить его на --set-upstream-to, --set-upstreamустарело и будет удалено.
Марк Крамер
93

Вы не используете :синтаксис - pullвсегда модифицирует текущую извлеченную ветку. Таким образом:

git pull origin my_remote_branch

пока вы my_local_branchвыписались, будете делать то, что хотите.

Поскольку у вас уже установлена ​​ветка отслеживания, вам даже не нужно указывать - вы можете просто сделать ...

git pull

пока вы my_local_branchвыписались, и он будет обновляться из отслеживаемой ветки.

Янтарь
источник
1
Это должен быть правильный ответ. Это так просто.
m4l490n,