J'ai reçu ce message de Git:
Vous avez demandé à extraire de l '«origine» distante, mais vous n'avez pas spécifié de branche. Comme il ne s'agit pas de la télécommande configurée par défaut pour votre branche actuelle, vous devez spécifier une branche sur la ligne de commande.
Quelqu'un peut-il l'expliquer? et plus important comment y remédier?
git pull
tire et fusionne avec la branche actuelle, donc son comportement dépend complètement de la branche extraite, et avec une HEAD détachée (aucune branche extraite), il n'y a aucun moyen de savoir quelle branche extraire.Pour résoudre ce problème, en supposant que vous êtes sur la
master
branche et que vous souhaitez extraire lamaster
branche de laorigin
télécommande, dans des versions Git suffisamment récentes (1.8 ou plus récentes):(De même pour d'autres succursales et / ou télécommandes.)
Si vous pouvez combiner cela avec une poussée, c'est encore plus court:
Par la suite, une plaine
git pull
/git push
fera ce que vous attendez.Pendant la série Git 1.7,
git branch
je n'avais pas le-u
commutateur (seulementgit push
), et à la place, vous deviez utiliser beaucoup plus longtemps--set-upstream
:Notez l'inversion des arguments par rapport à
-u
. J'ai falsifié cet ordre plus d'une fois.Au fait, tous ces éléments sont des raccourcis pour effectuer les opérations suivantes, ce que vous pouvez toujours faire explicitement:
Avant 1.7, vous deviez le faire de cette façon.
la source
git branch --set-upstream master origin/master
-u
option n'est pas documentéegit branch
dans ma version, 1.8.5.3, ce qui rend votre documentation encore plus importante. Et, comme vous le constatez, l'option n'était pas disponible dans la version 1.7. *. Puisque-u
c'est l'abréviation de--set-upstream
, l'ordre de ses arguments ne devrait-il pas être inversé comme vous l'avez fait en--set-upstream
raison du commentaire de @ EvanDonovan?git branch -u origin/master master
), cela fonctionne comme prévu / prévu pour moi: "Branch master configuré pour suivre le maître de branche distant depuis l'origine."-u
commutateur n'est en fait pas la forme courte de--set-upstream
. Son ordre des arguments est effectivement inversé par rapport à l'ordre des--set-upstream
. Je pense que ce n'est que plus tard que--set-upstream-to
(notez le «-to») a été introduit, ce qui-u
est maintenant la forme abrégée de.Le message dit exactement de quoi il s'agit. Votre succursale actuelle n'est associée à aucune succursale d' origine (ne suit pas) . Donc, git ne sait pas quoi tirer.
Que faire? Ça dépend...
Dans la plupart des cas d' habitude , vous travaillez hors une branche locale xyz qui ramifié de maître qui est cloné à partir d' origine « maître s. La façon habituelle de le résoudre est de passer en maître et de tirer pour le synchroniser avec l' origine , puis de revenir à xyz et
rebase master
.Mais dans votre situation, vous voudrez peut-être faire autre chose. Nous ne pouvons pas le savoir sans connaître les détails de vos succursales et télécommandes et comment vous comptez les utiliser.
la source