git fetch ne va pas chercher toutes les twigs

J’ai cloné un repository, après quoi quelqu’un d’autre a créé une nouvelle twig sur laquelle j’aimerais commencer à travailler. J’ai lu le manuel, et il semble facile et direct. Curieusement, ça ne marche pas, et tous les articles que j’ai trouvés suggèrent que je fais le bon choix. Je me soumettrai donc à la mise en voix, car il doit bien y avoir quelque chose qui ne va pas:

L’action correcte semble être

git fetch git branch -a * master remotes/origin/HEAD --> origin/master remotes/origin/master git checkout -b dev-gml origin/dev-gml 

À ce stade, il y a un problème, pour une raison quelconque après la git fetch je ne peux pas voir la twig distante de dev-gml. Pourquoi pas? Si je clone le repository tout de suite, c’est là, donc la twig distante existe certainement:

 $ mkdir ../gitest $ cd ../gitest $ git clone https://github.com/example/proj.git Cloning into proj... remote: Counting objects: 1155, done. remote: Compressing objects: 100% (383/383), done. remote: Total 1155 (delta 741), reused 1155 (delta 741) Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done. Resolving deltas: 100% (741/741), done. $ cd projdir $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/dev-gml remotes/origin/master 

J’ai essayé git update , git pull , git fetch --all , git pretty-please dans toutes les permutations possibles …

Le problème peut être vu lors de la vérification du paramètre remote.origin.fetch
(Les lignes commençant par $ sont des invites bash avec les commandes que j’ai tapées. Les autres lignes sont la sortie résultante)

 $ git config --get remote.origin.fetch +refs/heads/master:refs/remotes/origin/master 

Comme vous pouvez le voir, dans mon cas, la télécommande a été configurée pour extraire spécifiquement et uniquement la twig principale. Je l’ai corrigé comme ci-dessous, y compris la deuxième commande pour vérifier les résultats.

 $ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" $ git config --get remote.origin.fetch +refs/heads/*:refs/remotes/origin/* 

Le joker * signifie bien entendu tout ce qui se trouve sous ce chemin.

Malheureusement, j’ai vu ce commentaire après avoir déjà creusé et trouvé la réponse par essais et erreurs.

Pour suivre une (nouvelle) succursale distante en tant que succursale locale:

 git checkout -b  / 

ou (parfois cela ne fonctionne pas sans les remotes/ supplémentaires remotes/ ):

 git checkout -b  remotes// 

Edit: Vous devez exécuter git remote update ou git remote update . Ensuite, vous pouvez lancer git branch -r pour répertorier les twigs distantes.

Des astuces git utiles

  • Git Cheat Sheet ( Mon préféré )
  • Quelques notes sur git
  • Git Cheat Sheet (pdf)

J’ai eu ce problème aujourd’hui sur un repo.

Ce n’était pas le problème +refs/heads/*:refs/remotes/origin/* comme solution supérieure.

Le symptôme était simplement que git fetch origin ou git fetch ne semblait rien faire, bien qu’il y ait des twigs à récupérer.

Après avoir essayé beaucoup de choses, j’ai enlevé la télécommande d’origine et l’ai recréée. Cela semble l’avoir corrigé. Je ne sais pas pourquoi.

supprimer avec: git remote rm origin

et recréer avec: git remote add origin

Pour le rendre plus spécifique Créez une twig de suivi, ce qui signifie que vous suivez maintenant une twig distante.

 git branch --track branch remote-branch git branch --track exp remotes/origin/experimental 

Après quoi tu peux

 git branch # to see the remote tracking branch "exp" created . 

Ensuite, pour travailler sur cette twig

 git checkout branchname git checkout exp 

Après avoir apporté des modifications à la twig. Vous pouvez git fetch et git merge avec votre twig de suivi à distance pour fusionner vos modifications et les transférer sur la twig distante comme ci-dessous.

 git fetch origin git merge origin/experimental git push origin/experimental 

J’espère que ça aide et vous donne une idée, comment cela fonctionne.

écris-le depuis le terminal

 git fetch --prune. 

ça fonctionne bien.

Cela peut être dû à un moment de la face avant: si vous passez de plusieurs clones, il est facile de vous retrouver dans le mauvais arbre source en essayant de créer une twig inexistante. Il est plus facile lorsque les clones ont des noms similaires, ou les repos sont des clones distincts pour le même projet de chacun des consortingbuteurs multiples. Un nouveau clone de git semblerait évidemment résoudre ce “problème” lorsque le véritable problème est de perdre le focus ou le contexte de travail ou les deux.

Je devais aller dans mes repositorys distants GitExtensions car rien ne semblait fonctionner. Là, j’ai vu que 2 succursales n’avaient pas de référentiel distant configuré. après l’ajustement, il se présente comme suit entrer la description de l'image ici

Remarque: la twig noExternal3 indique toujours qu’il noExternal3 pas de référentiel distant. Pas sûr de ce que combo de commandes bash aurait trouvé ou ajusté cela.

Nous avons eu le même problème et vous devez utiliser

 git fetch git push origin branch_name git branch -r 

J’espère que cela aidera quelqu’un qui fait face au même problème