web-dev-qa-db-fra.com

Git: Impossible de voir la nouvelle branche distante

Un collègue a poussé une nouvelle branche distante vers Origin/dev/homepage et je ne la vois pas lorsque je lance:

$ git branch -r

Je vois encore des branches distantes préexistantes.

Je suppose que cela est dû au fait que mes références distantes locales ne sont pas à jour. Par conséquent, lorsque j’ai exécuté un tir git, rien ne s’est passé, car ce tir ne tire que sur la branche en cours de travail, est-ce correct? Contrairement à git Push qui pousse toutes les branches qui ont changé vers la branche distante correspondante?

92
hybrid9

Commencez par vérifier que la branche a bien été poussée à distance en utilisant la commande git ls-remote Origin. Si la nouvelle branche apparaît dans la sortie, essayez de donner la commande git fetch: il convient de télécharger les références de branche depuis le référentiel distant.

Si votre branche distante n’apparaît toujours pas, revérifiez (dans le ls-remote sortie) quel est le nom de la branche sur la télécommande et, en particulier, s'il commence par refs/heads/. En effet, par défaut, la valeur de remote.<name>.fetch est:

+refs/heads/*:refs/remotes/Origin/*

de sorte que seules les références distantes dont le nom commence par refs/heads/ sera mappé localement en tant que références de suivi à distance sous refs/remotes/Origin/ _ (c’est-à-dire qu’ils deviendront des branches de suivi à distance)

127
Marco Leogrande

Vérifier si .git/config contient

[remote "Origin"]
    url = …
    fetch = +refs/heads/master:refs/remotes/Origin/master

Si oui, changez-le pour le dire

[remote "Origin"]
    url = …
    fetch = +refs/heads/*:refs/remotes/Origin/*

Ensuite, vous devriez pouvoir l'utiliser:

$ git fetch
remote: Counting objects: …
remote: Compressing objects: ..
Unpacking objects: …
remote: …
From …
 * [new branch]            branchname -> Origin/branchname
$ git checkout branchname
Branch branchname set up to track remote branch branchname from Origin.
Switched to a new branch 'branchname'
44
Jesse Glick

Effectuer une mise à jour distante git mettra également à jour la liste des branches disponibles à partir du référentiel distant.

Si vous utilisez TortoiseGit, à partir de la version 1.8.3.0, vous pouvez utiliser "Git -> Sync". Un bouton "Mise à jour à distance" apparaît dans le coin inférieur gauche de la fenêtre. Cliquez dessus. Ensuite, vous devriez pouvoir faire "Git -> Switch/Checkout" et faire apparaître la nouvelle branche distante dans la liste déroulante des branches que vous pouvez sélectionner.

29
metaforge

J'ai le même problème parfois.

La réponse la plus simple est:

git fetch Origin <branch_name>

28

Cela semble banal, mais mon problème était que je n'étais pas dans le bon projet. Assurez-vous d'être dans le projet auquel vous vous attendez. sinon, vous ne pourrez pas arracher les branches correctes.

3
BlackHatSamurai

Ce qui a finalement fini par fonctionner pour moi a été d’ajouter le nom du référentiel distant au git fetch commande, comme ceci:

git fetch core

Maintenant, vous pouvez tous les voir comme ceci:

git branch --all
1
Serj Sagan

J'ai utilisé la force brute et enlevé la télécommande puis l'a ajouté

git remote rm <remote>
git remote add <url or ssh>
0
Rubber Duck