web-dev-qa-db-fra.com

Git n'affiche pas toutes les succursales locales

J'ai bifurqué un dépôt de Github. En faisant git remote -v il affiche:

Origin  https://github.com/myusername/moodle.git (fetch)
Origin  https://github.com/myusername/moodle.git (Push)
upstream    https://github.com/moodle/moodle.git (fetch)
upstream    https://github.com/moodle/moodle.git (Push)

Le moodle.git a environ 10 branches, mais le repo n'en montre que 2. En faisant git branch -a (afficher toutes les branches) J'obtiens:

  MOODLE_24_STABLE// just these two on local..how?
* master//
  Origin/MOODLE_13_STABLE
  Origin/MOODLE_14_STABLE
  Origin/MOODLE_15_STABLE
  Origin/MOODLE_16_STABLE
  Origin/MOODLE_17_STABLE
  Origin/MOODLE_18_STABLE
  Origin/MOODLE_19_STABLE
  Origin/MOODLE_20_STABLE
  Origin/MOODLE_21_STABLE
  Origin/MOODLE_22_STABLE
  Origin/MOODLE_23_STABLE
  Origin/MOODLE_24_STABLE
  Origin/master
  upstream/MOODLE_13_STABLE
  upstream/MOODLE_14_STABLE
  upstream/MOODLE_15_STABLE
  upstream/MOODLE_16_STABLE
  upstream/MOODLE_17_STABLE
  upstream/MOODLE_18_STABLE
  upstream/MOODLE_19_STABLE
  upstream/MOODLE_20_STABLE
  upstream/MOODLE_21_STABLE
  upstream/MOODLE_22_STABLE
  upstream/MOODLE_23_STABLE
  upstream/MOODLE_24_STABLE
  upstream/master

Comment résoudre mon problème sans perte de données ni irrégularités?

17
xan

Le clonage d'un dépôt ne dupliquera pas toutes les branches distantes sur le dépôt local: pour un grand dépôt distant avec beaucoup de branches, cela polluerait votre espace de noms local avec des tonnes de branches.

J'ai un one-liner command afin de créer des branches locales pour suivre toutes les branches distantes d'un dépôt distant, mais ce n'est généralement pas nécessaire.
Vous ne créez une succursale locale qui suit une succursale distante qu'en cas de besoin.

git checkout -b aBranch --track Origin/aBranch

# or, shorter:
$ git checkout --track Origin/aBranch 
Branch aBranch set up to track remote branch refs/remotes/Origin/aBranch.
Switched to a new branch "aBranch"  

# even shorter at the end of this answer.

L'ajout d'un --track Permet de configurer la configuration pour marquer la branche de point de départ comme "en amont" de la nouvelle succursale.
Cette configuration indiquera à git d'afficher la relation entre les deux branches dans git status Et git branch -v.
De plus, il ordonne à git pull sans arguments de tirer depuis l'amont lorsque la nouvelle branche est extraite.


kostix mentionne que --track est impliqué lors du bifurcation d'une branche sur une branche distante (sauf si branch.autosetupmerge est réglé sur false)

Cela pourrait suffire

git checkout aBranch

L'explication exacte de la page de manuel git checkout est:

Si <branch> N'est pas trouvé mais qu'il existe une branche de suivi dans exactement une télécommande (appelez-la <remote>) Avec un nom correspondant, traitez comme équivalent à:

$ git checkout -b <branch> --track <remote>/<branch
19
VonC

Parfois, si vous n'avez pas extrait le dernier code, vous ne pourrez pas extraire la branche nouvellement créée, car vos modifications ne sont pas synchronisées.

Donc, tirez d'abord le dernier -checkout de la branche nouvellement créée

5
Grace Aloysius