web-dev-qa-db-fra.com

balise git checkout, git pull échoue dans la branche

J'ai cloné un référentiel git puis extrait une balise:

# git checkout 2.4.33 -b my_branch

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

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

git pull <remote> <branch>

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

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

Je veux que git pull ne mette à jour que la branche principale et laisse ma branche actuelle (c'est tout de même une balise). Est-ce que quelque chose comme ça est possible?

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

131
alesko

Edit: Pour les versions plus récentes de Git, --set-upstream master est obsolète, vous devez utiliser --set-upstream-to à la place:

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

À l'invite, vous pouvez simplement exécuter:

git branch --set-upstream master Origin/master

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

114
Vincent Wen

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

$ git Push -u Origin master

Dans le fichier d'aide, le -u définit fondamentalement la valeur par défaut pour les extractions:

-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).
90
Simon Raik-Allen

Essayez ces commandes:

git pull Origin master
git Push -u Origin master
48
navins

Revenez à la branche principale à l'aide de

$ git checkout master

puis exécutez l'opération git pull

$ git pull Origin/master

Ensuite, vous pourrez revenir à votre my_branch.

7
cfedermann

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

@ Simon : cela fera aussi le Push. pourquoi donc?

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

et selon docs:

-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.
5
Casey

Vous pourriez avoir plusieurs branches. Et votre branche actuelle n'a pas mis son amont en mode distant.

Étapes pour résoudre ce problème:

git checkout branch_name
git branch --set-upstream-to=Origin/remote_branch_name local_branch_name

par exemple.

// this set upstream of local branch develop to remote branch  Origin/develop,
git branch --set-upstream-to=Origin/develop develop

Ensuite, lorsque vous faites git pull, il extrait de la branche spécifiée.

4
Eric Wang

Tout d’abord, assurez-vous d’être sur la bonne branche.
Alors (une fois seulement):

git branch --track

Après que cela fonctionne à nouveau:

git pull
4
drzymala

Vous pouvez spécifier quelle branche vous voulez tirer:

git pull Origin master

Vous pouvez également le configurer de sorte que votre branche maître locale trace la branche principale de github en amont:

git branch --set-upstream-to=Origin/master master
git pull

Ce suivi de branche est configuré automatiquement pour vous lorsque vous clonez un référentiel (pour la branche par défaut uniquement), mais si vous ajoutez une télécommande à un référentiel existant, vous devez configurer vous-même le suivi. Heureusement, les conseils donnés par git rendent cela assez facile à retenir.

--set-upstream est obsolète dans git 1.9.x, apparemment. À l'avenir, vous voudriez utiliser quelque chose comme

git branch -u Origin/master

en supposant que vous avez déjà vérifié master. Sinon, git branch -u Origin/master master fonctionnera

2
Akash Kandpal

Essaye ça

git checkout master

git pull Origin master
2
vanarajcs

Vous devez configurer votre suivi (en amont) pour la branche actuelle.

git branch --set-upstream master Origin/master

Est déjà obsolète au lieu de cela vous pouvez utiliser --track flag

git branch --track master Origin/master

J'aime aussi la référence de la documentation que @casey remarque:

-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.
1
Jorman Bustos

Ce qui a fonctionné pour moi a été: git branch --set-up-to-= Origin master Lorsque j'ai refait un pull, je n'ai eu que les mises à jour du maître et l'avertissement est parti.

1
Jason D

Si, comme moi, vous devez le faire tout le temps, vous pouvez configurer un alias pour le faire automatiquement en ajoutant ce qui suit dans votre fichier .gitconfig:

[alias]
    set-upstream = !git branch --set-upstream-to=Origin/`git symbolic-ref --short HEAD`

Lorsque vous voyez le message There is no tracking information..., exécutez simplement git set-upstream, puis git Push à nouveau.

Merci à https://zarino.co.uk/post/git-set-upstream/

1
rjmunro

Cette commande est obsolète: git branch --set-upstream master Origin/master

Ainsi, lorsque vous essayez de configurer le suivi, voici la commande qui a fonctionné pour moi:

git branch --set-upstream-to=Origin/master master
0
Aaron Lelevier

Pour simplement télécharger les mises à jour:

git fetch Origin master

Cependant, cela ne fait que mettre à jour une référence appelée Origin/master. Le meilleur moyen de mettre à jour votre master local serait le contrôle/fusion mentionné dans un autre commentaire. Si vous pouvez garantir que votre master local n’a pas divergé du tronc principal sur lequel Origin/master est allumé, vous pourriez utilise git update-ref pour associer votre master actuel au nouveau point, mais ce n’est probablement pas la meilleure solution à utiliser régulièrement ...

0
twalberg