Mettre à jour une branche locale avec les modifications d'une branche distante suivie

96

J'ai une branche locale nommée « my_local_branch», qui suit une branche distante origin/my_remote_branch.

Maintenant, la branche distante a été mise à jour, et je suis sur le ' my_local_branch' et je veux apporter ces modifications. Dois-je juste faire:

git pull origin my_remote_branch:my_local_branch

C'est la bonne route?

skyork
la source

Réponses:

72

Vous avez défini l'amont de cette branche

(voir:

git branch -f --track my_local_branch origin / my_remote_branch
# OU (si my_local_branch est actuellement extrait):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --trackne fonctionnera pas si la branche est extraite: utilisez la deuxième commande à la git branch --set-upstream-to place, ou vous obtiendrez " fatal: Cannot force update the current branch.")

Cela signifie que votre succursale est déjà configurée avec:

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

Git a déjà toutes les informations nécessaires.
Dans ce cas:

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

est assez.


Si vous n'aviez pas établi cette relation de branche en amont quand il s'agissait de pousser votre ' my_local_branch', alors un simple git push -u origin my_local_branch:my_remote_branchaurait suffi pour pousser et définir la branche en amont.
Après cela, pour les tractions / poussées suivantes, git pullou git pushaurait, encore une fois, suffi.

VonC
la source
L'OP mentionne qu'ils suivent déjà la succursale distante.
Amber
7
@Amber d'où ma réponse: git pullc'est assez.
VonC
La première commande git branch -f --track master origin/masterrenvoie une erreur:fatal: Cannot force update the current branch.
Mark Kramer
@MarkKramer Oui, j'ai édité la réponse pour clarifier la deuxième commande à utiliser si la branche locale est actuellement extraite.
VonC
Vous devriez également le changer en --set-upstream-to, --set-upstreamest obsolète et va être supprimé.
Mark Kramer
88

Vous n'utilisez pas la :syntaxe - pullmodifie toujours la branche actuellement extraite. Donc:

git pull origin my_remote_branch

pendant que vous avez my_local_branchvérifié, fera ce que vous voulez.

Puisque vous avez déjà l'ensemble de branches de suivi, vous n'avez même pas besoin de spécifier - vous pouvez simplement faire ...

git pull

pendant que vous avez my_local_branchextrait, et il sera mis à jour à partir de la branche suivie.

ambre
la source
Cela devrait être la bonne réponse. C'est aussi simple que ça.
m4l490n