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?
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
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