140 votes

git checkout tag, git pull échoue dans la branche

J'ai cloné un dépôt git et j'ai ensuite vérifié une balise :

# git checkout 2.4.33 -b my_branch

C'est OK, mais quand j'essaie d'exécuter git pull dans ma branche, git crache cette erreur :

Il n'y a pas d'information de suivi pour la branche actuelle. Veuillez spécifier avec quelle branche vous voulez fusionner. Voir git-pull(1) pour détails

git pull <remote> <branch>

Si vous souhaitez définir les informations de suivi pour cette branche, vous pouvez le faire avec :

git branch --set-upstream new origin/<branch>

Je veux git pull pour ne mettre à jour que la branche master et laisser ma branche actuelle tranquille (c'est un tag de toute façon). Est-ce que quelque chose comme cela est possible ?

La raison pour laquelle j'ai besoin de cela est que j'ai un script automatique qui tire toujours git le dépôt et bien sûr échoue à cause de l'erreur ci-dessus .

0 votes

119voto

catknight Points 396

Edit : Pour les versions plus récentes de Git, --set-upstream master a été déprécié, vous devez utiliser --set-upstream-to à la place :

git branch --set-upstream-to=origin/master master

Comme il l'a demandé, vous pouvez juste courir :

git branch --set-upstream master origin/master

Après cela, vous pouvez simplement exécuter git pull pour mettre à jour votre code.

6 votes

Cela a résolu le problème. Mais je dois encore comprendre comment ma branche master a perdu la référence à l'origine. J'étais sur une branche et j'ai fait git checkout master . Je ne pouvais pas faire git pull parce que la référence à l'origine était perdue. Maintenant cela fonctionne. Merci !

0 votes

'git branch --set-upstream-to=origin/master master my_branch' a fonctionné pour moi

0 votes

J'essaie de travailler sur une branche, j'ai cloné un repo et extrait une branche, alors pourquoi voudrais-je définir --set-upstream-to=origin/master. Est-ce que cela va pousser mes changements là ? Pourquoi ne pas le mettre sur la BRANCHE sur laquelle je travaille ?

92voto

Simon Raik-Allen Points 641

J'ai eu le même problème et l'ai résolu avec cette commande :

$ git push -u origin master

D'après le fichier d'aide, le -u définit essentiellement la valeur par défaut pour les pulls :

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).

48voto

navins Points 1210

Essayez ces commandes :

git pull origin master
git push -u origin master

5voto

Casey Points 471

@alesko : il n'est pas possible de faire seulement git pull après le paiement my_branch de mettre à jour master uniquement.
Parce que git pull fusionnera également avec le actuel branche -> dans votre scénario à la my_branch

@Simon cela fera aussi la poussée. pourquoi cela ?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.

et d'après les documents :

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

4voto

martini Points 847

Tout d'abord, assurez-vous que vous êtes sur la bonne branche.
Ensuite (une seule fois) :

git branch --track

Après cela, cela fonctionne à nouveau :

git pull

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