385 votes

Différences entre git pull origin master & git pull origin/master

Quelle est la différence entre git pull origin master y git pull origin/master ?

1 votes

Calmh l'a bien couvert, mais la non-réponse est que vous ne devriez jamais faire git pull origin/master . Si vous voulez fusionner la branche distante [stockée localement] origin/master il suffit d'utiliser git merge origin/master .

3 votes

@Jefromi : Pouvez-vous expliquer pourquoi il est toujours préférable de faire git merge plutôt que git pull ?

25 votes

git pull signifie git fetch suivi par git merge . Il récupère le contenu de la branche distante, puis le fusionne dans votre branche actuelle. Mais origin/master est une branche locale (qui suit une branche distante). Si vous voulez la fusionner, vous n'avez pas besoin d'aller chercher quoi que ce soit. Il est trompeur de dire git pull origin/master quand vous n'êtes pas en train de récupérer des données à distance.

504voto

Jakob Borg Points 10869

git pull origin master tirera les changements de la origin à distance, master et les fusionner à la branche locale vérifiée.

git pull origin/master va tirer les changements de la branche stockée localement origin/master et fusionner cette branche avec la branche locale. Le site origin/master La branche est essentiellement une "copie en cache" de ce qui a été extrait en dernier lieu de l'application origin C'est pourquoi on l'appelle une branche distante dans le jargon de Git. Cela peut être quelque peu déroutant.

Vous pouvez voir quelles branches sont disponibles avec git branch y git branch -r pour voir les "branches éloignées".

1 votes

En cas de git pull origin master Si je suis sur une autre branche de mon dépôt et que j'exécute la commande ci-dessus, est-ce qu'elle mettra à jour ma branche actuelle avec les changements de la branche d'origine distante ou ma branche principale avec les changements ?

0 votes

Ma réponse était en fait un peu incorrecte. :) Je l'ai mise à jour. La réponse à votre question est que dans les deux cas, il y aura fusion avec votre branche actuelle. Pour éviter la fusion avec votre branche actuelle, vous devez git fetch et le séparément git merge .

5 votes

@calmh : git merge (et donc git pull ) fusionne toujours dans la branche courante. Pour fusionner avec quelque chose d'autre que votre branche courante, vérifiez-la d'abord.

12voto

user33276346 Points 83

git pull = git fetch + git merge origin/branch

git pull y git pull origin branch ne diffèrent que par le fait que cette dernière ne "mettra à jour" que l'origine/branche et non l'ensemble de l'origine/* comme git pull fait.

git pull origin/branch ne fonctionnera pas parce qu'il essaie de faire un git fetch origin/branch qui n'est pas valide.

Question liée : git fetch + git merge origin/master vs git pull origin/master

10voto

Dhruvil Shah Points 174

git pull origin master va récupérer tous les changements de la branche master de la branche distante et va la fusionner dans votre branche locale. Nous n'utilisons généralement pas git pull origin/master. Nous pouvons faire la même chose en git merge origin/master . Il fusionnera toutes les modifications de la "copie en cache" de la branche maîtresse d'origine dans votre branche locale. Dans mon cas, git pull origin/master lance l'erreur :

fatal: 'origin/master' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X