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

284

Quelle est la difference entre git pull origin masteret git pull origin/master?

Rachel
la source
1
calmh a à peu près tout couvert, mais la non-réponse est que vous ne devriez jamais le faire git pull origin/master. Si vous souhaitez fusionner la branche distante [stockée localement] origin/master, utilisez simplement git merge origin/master.
Cascabel
3
@Jefromi: Pouvez-vous expliquer pourquoi il est toujours préférable de faire git merge par rapport à git pull?
Rachel
16
git pullsignifie git fetchsuivi par git merge. Il récupère le contenu de la télécommande, puis le fusionne dans votre branche actuelle. Mais origin/masterest une branche locale (suivi d'une branche distante). Si vous voulez le fusionner, vous n'avez rien à chercher. Il est trompeur de dire git pull origin/masterque vous ne récupérez pas réellement à distance.
Cascabel
Merci Jefromi pour les informations utiles. Cela aide vraiment à comprendre assez facilement le concept pas si facile.
Rachel
Pour ceux qui lisent ceci et qui sont encore confus, il origin/masters'agit d'une branche stockée localement qui met en cache la branche principale sur la télécommande d'origine.
iheanyi

Réponses:

356

git pull origin mastertirera les modifications de la branche origindistante masteret les fusionnera à la branche locale extraite .

git pull origin/masterextraira les modifications de la branche stockée localement origin/masteret les fusionnera à la branche extraite locale . La origin/masterbranche est essentiellement une "copie en cache" de ce qui a été extrait pour la dernière fois origin, c'est pourquoi elle est appelée une branche distante dans le langage git. Cela peut être quelque peu déroutant.

Vous pouvez voir quelles branches sont disponibles avec git branchet git branch -rvoir les "branches distantes".

Jakob Borg
la source
1
en cas de git pull origin masterfusionnera-t-il toujours avec la branche principale, disons am sur une autre branche de mon référentiel et ensuite je fais la commande ci-dessus, mettra-t-il à jour ma branche actuelle avec les modifications distantes d'origine ou ma branche principale avec les modifications?
Rachel
4
@calmh: git merge(et donc git pull) fusionne toujours dans la branche courante. Pour fusionner avec autre chose que votre branche actuelle, vérifiez-le d'abord.
Cascabel
2
euh .. Je ne vois pas en quoi 'origin / master' est différent de 'origin master'; ils sont tous les deux la branche principale d'origine. Pouvez-vous réellement donner un exemple de la différence?
hasen
69
git pull origin/masterpeut avoir été une commande valide quand elle a été écrite, mais de nos jours (git 1.7.10.3) elle échoue avec fatal: 'origin/master' does not appear to be a git repository(comme il se doit - pull est toujours pour tirer des télécommandes).
user1338062
3
Pourquoi git est-il si déroutant? Nous avons donc 4 dépôts totalement, n'est-ce pas? Il existe (1) un référentiel distant, (2) un référentiel local, (3) un référentiel intermédiaire, (4) un local-distant aka origin / master? Pourquoi git aurait-il un dépôt # 4?
Mugen
3

git pull origin masterrécupérera toutes les modifications de la branche principale de la télécommande et la fusionnera dans votre section locale. Nous n'utilisons généralement pas git pull origin / master. Nous pouvons faire la même chose par git merge origin/master. branche principale d'origine dans votre branche locale.Dans mon cas, git pull origin/masterjette l'erreur.

Dhruvil Shah
la source
1

git pull= git fetch+git merge origin/branch

git pullet git pull origin branchne diffèrent que par le fait que cette dernière ne "mettra à jour" l'origine / la branche et pas toutes les origines / * comme le git pullfait.

git pull origin/branchne fonctionnera tout simplement pas, car il essaie de faire un git fetch origin/branchqui n'est pas valide.

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

user33276346
la source