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


104

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

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

git pull origin my_remote_branch:my_local_branch

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

Ответы:


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было бы достаточно.


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,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.