Il n'y a pas d'informations de suivi pour la branche actuelle

581

J'utilise github depuis une période relativement courte, et j'ai toujours utilisé le client pour effectuer des commits et des pulls. J'ai décidé de l'essayer depuis le git bash hier, et j'ai réussi à créer un nouveau dépôt et des fichiers validés.

Aujourd'hui, j'ai apporté des modifications au référentiel à partir d'un autre ordinateur, j'ai validé les modifications et maintenant je suis de retour à la maison et j'ai effectué une git pullmise à jour de ma version locale et j'obtiens ceci:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

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

le seul contributeur à ce repo est moi et il n'y a pas de succursales (juste un master). Je suis sur Windows et j'ai effectué le pull de git bash:

entrez la description de l'image ici

statut git:

$ git status
# On branch master
nothing to commit, working directory clean

branche git:

$ git branch
* master

Qu'est-ce que je fais mal?

valerio0999
la source
D'accord, que diriez-vous d'un git remote -v? Qu'est-ce que ça dit?
criswell
Copie
Vous pouvez également obtenir cette erreur si vous n'avez pas cd dans le répertoire repo cloné, lors de l'exécution git pull.
Victoria Stuart du
Avec Git 2.24, Q4 2019, git pull --set-upstream-to=origin/master masterc'est possible. Voir ma réponse ci
VonC

Réponses:

951

Vous pouvez spécifier la branche que vous souhaitez tirer:

git pull origin master

Ou vous pouvez le configurer de sorte que votre branche principale locale suive 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 le suivi vous-même. Heureusement, les conseils donnés par git rendent cela assez facile à retenir.

ComputerDruid
la source
3
parfait! ça a marché. alors que s'est-il passé? Il n'y avait pas de "branche par défaut" pour un "git pull" par défaut? c'est pourquoi il y a eu l'erreur?
valerio0999
16
--set-upstream est déconseillé 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à extrait master. Sinon, git branch -u origin/master mastercela fonctionnera.
Bart Lire le
5
@BartRead l'a mis à jour pour utiliser la nouvelle --set-upstream-to=syntaxe plus claire . (qui remplace --set-upstream)
ComputerDruid
61
cela semble être une situation désolée - avons-nous vraiment besoin de régler cela manuellement pour chaque branche? Pourquoi ne pouvons-nous pas simplement définir l'origine comme étant la télécommande par défaut, puis avoir chaque push / pull par défaut sur la branche d'origine avec le même nom? est-ce si difficile?
Alexander Mills
4
Ah, l'élément clé pour moi ici était que si vous supprimez et recréez une télécommande, le suivi qui a été configuré par l'original fetcha été perdu. D'où la nécessité de le réinstaller. :)
Ben
42

Voir: git checkout tag, git pull échoue dans la branche

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

[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:

 git set-upstream
 git push

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

rjmunro
la source
1
Voici un moyen de l'ajouter au global .gitconfigsur une seule ligne (peut être modifié pour les configurations locales ou autres en conséquence):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis
17

La réponse de ComputerDruid est excellente, mais je ne pense pas qu'il soit nécessaire de configurer manuellement en amont, sauf si vous le souhaitez. J'ajoute cette réponse parce que les gens pourraient penser que c'est une étape nécessaire.

Cette erreur disparaîtra si vous spécifiez la télécommande que vous souhaitez tirer comme ci-dessous:

git pull origin master

Notez qu'il origins'agit du nom de la télécommande et masterdu nom de la branche.


1) Comment vérifier le nom de la télécommande

git remote -v

2) Comment voir quelles branches disponibles dans le référentiel.

git branch -r
Aerin
la source
1
Meilleure réponse pour moi, merci!
Bahman.A
7

Je rencontre souvent ce message exact parce que je crée des succursales locales via git checkout -b <feature-branch-name> sans créer d'abord la branche distante.

Une fois tout le travail terminé et validé localement, le correctif était de git push -ucréer la branche distante, de pousser tout mon travail, puis l'URL de demande de fusion.

Ron Reynolds
la source
1
pour ce que ça vaut, j'ai dû courir git push -u origin <my-feature-branch-name>pour créer la branche distante et pousser mon travail
Donnie C
6

J'essayais les exemples ci-dessus et je ne pouvais pas les synchroniser avec une branche (non maître) que j'avais créée sur un autre ordinateur. Pour le fond, j'ai créé ce référentiel sur l'ordinateur A (git v 1.8) puis cloné le référentiel sur l'ordinateur B (git 2.14). J'ai effectué toutes mes modifications sur le comp B, mais lorsque j'ai essayé de les transférer sur l'ordinateur, AI n'a pas pu le faire, obtenant la même erreur ci-dessus. Semblable aux solutions ci-dessus, je devais faire:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

légèrement différent, mais j'espère que quelqu'un aide

imapotatoe123
la source
Cela a fonctionné pour moi; J'utilisais également une branche non principale qui avait été configurée sur un autre ordinateur. En utilisant cette commande dans Git Bash, j'ai ensuite pu obtenir mes modifications :)
Novastorm
3

1) git branch --set-upstream-to = origine /<master_branch> feature /<your_current_branch>

2) git pull

MERLIN THOMAS
la source
1

$ git branch --set-upstream-to=heroku/master master et

$ git pull

travaillé pour moi!

May Dias
la source
1

La même chose m'est arrivée avant quand j'ai créé une nouvelle branche git sans la pousser à l'origine.

Essayez d'exécuter ces deux lignes en premier:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

Alors:

git pull origin name_of_new_branch

Ça devrait aller maintenant!

Triton
la source
1

Cela se produit car la branche actuelle n'a pas de suivi sur la branche de la télécommande. vous pouvez donc le faire de 2 façons.

  1. Tirez avec un nom de branche spécifique

git pull origin master

  1. Ou vous pouvez spécifier une branche spécifique pour suivre la branche locale.

git branch --set-upstream-to = origine /

KR93
la source
0

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

Amir Hussain
la source
2
Il est toujours utile d'ajouter des explications à votre réponse, pour la rendre plus claire et compréhensible. Veuillez lire stackoverflow.com/help/how-to-answer .
32cupo
1
En plus du point de @ 32cupo, c'est essentiellement la même chose que la réponse acceptée de cinq ans, mais avec moins d'explications.
Jeremy Caney