J'ai cloné un référentiel, après quoi quelqu'un d'autre a créé une nouvelle branche, sur laquelle j'aimerais commencer à travailler. J'ai lu le manuel, et il semble mort facilement. Étrangement, cela ne fonctionne pas, et tous les messages que j'ai trouvés suggèrent que je fais la bonne chose. Je vais donc me soumettre au fustige, car il doit y avoir quelque chose de mal à l'évidence:
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 que git fetch
je ne puisse pas voir la branche distante dev-gml. Pourquoi pas? Si je clone le référentiel fraîchement, il est là, donc la branche 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
Je l' ai essayé git update
, git pull
, git fetch --all
, git pretty-please
dans toutes les permutations possibles ...
git config --get remote.origin.fetch
produit? Si ce n'est pas le cas+refs/heads/*:refs/remotes/origin/*
, cela devrait probablement l'être.+refs/heads/master:refs/remotes/origin/master
avecmaster
au lieu de*
Réponses:
Le problème peut être vu lors de la vérification du
remote.origin.fetch
paramètre(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)Comme vous pouvez le voir, dans mon cas, la télécommande a été définie pour extraire la branche principale spécifiquement et uniquement. Je l'ai corrigé comme ci-dessous, y compris la deuxième commande pour vérifier les résultats.
Le caractère générique
*
signifie bien sûr tout sous ce chemin.Malheureusement, j'ai vu ce commentaire après avoir déjà creusé et trouvé la réponse par essais et erreurs.
la source
--replace-all
paramètre pour remplacer toutes les valeurs sur la configuration de monremote.origin.fetch
git clone <url> --branch <branch> --single-branch [<folder>]
git clone ... --depth 1
J'ai eu ce problème aujourd'hui sur un repo.
Ce n'était pas le
+refs/heads/*:refs/remotes/origin/*
problème selon la meilleure solution.Le symptôme était simplement que
git fetch origin
ougit fetch
tout simplement ne semblait rien faire, bien qu'il y ait des branches distantes à récupérer.Après avoir essayé beaucoup de choses, j'ai retiré 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 <git uri>
la source
remote.origin.fetch
ie+refs/heads/*:refs/remotes/origin/*
. La solution ci-dessus m'a aidé.git remote update origin
travaillé pour moi. Je suppose que quelque chose devait être rafraîchissant?git remote update origin
n'a pas fonctionné pour moi, mais le retrait et l'ajout de la télécommande l'ont fait.Mise à jour à distance
Vous devez courir
ou
Ensuite, vous pouvez exécuter
git branch -r
pour répertorier les branches distantes.Commander une nouvelle succursale
Pour suivre une (nouvelle) branche distante en tant que branche locale:
ou (parfois cela ne fonctionne pas sans le supplément
remotes/
):Cheatsheets git utiles
la source
git fetch
suivi,git branch -a
il n'affiche pas toutes les branches. J'ai dû supprimer mon répertoire de travail et re-cloner pour voir la branchedev-gml
créée par un collaborateur. Cela a fonctionné cette fois, mais nous allons souvent créer des succursales!Edit:
très bien aurait pu fonctionner. C'est ce que j'essaierais si j'étais toujours confronté au problème. HTHgit remote update origin
. Cela a rendu la branche manquante visible viagit branch -l -r
. (J'ai regardégit config --get remote.origin.fetch
et la sortie était+refs/heads/*:refs/remotes/origin/*
comme prévu.)l'écrire depuis le terminal
ça fonctionne bien.
la source
Pour le rendre plus spécifique Créez une branche de suivi, ce qui signifie que vous suivez maintenant une branche distante.
Après quoi vous pouvez
Ensuite, pour travailler sur cette branche, faites
Après avoir apporté des modifications à la branche. Vous pouvez git fetch et git merge avec votre branche de suivi à distance pour fusionner vos modifications et pousser vers la branche distante comme ci-dessous.
J'espère que cela vous aide et vous donne une idée de comment cela fonctionne.
la source
J'ai eu un problème similaire, mais dans mon cas, je pouvais tirer / pousser vers la branche distante mais je
git status
n'ai pas montré l'état de la branche locale par rapport aux distants.De plus, dans mon cas, je
git config --get remote.origin.fetch
n'ai rien retournéLe problème est qu'il y avait une faute de frappe dans le
.git/config
fichier dans la ligne de récupération du bloc distant respectif. Probablement quelque chose que j'ai ajouté par erreur précédemment (parfois je regarde directement ce fichier, ou même le modifie)Vérifiez donc si votre entrée à distance dans le
.git/config
fichier est correcte, par exemple:la source
Cela pourrait être dû à un moment de paume du visage: si vous basculez entre plusieurs clones, il est facile de vous retrouver dans la mauvaise arborescence source en essayant de tirer une branche inexistante. C'est plus facile lorsque les clones ont des noms similaires ou que les dépôts sont des clones distincts pour le même projet de chacun des contributeurs multiples. Un nouveau clone git semblerait évidemment résoudre ce "problème" lorsque le vrai problème perd le focus ou le contexte de travail ou les deux.
la source
J'ai dû aller dans mes référentiels distants GitExtensions car rien ici ne semblait fonctionner. Là, j'ai vu que 2 branches n'avaient pas de référentiel distant configuré. après l'ajustement, il ressemble à ceci:
La branche de notification
noExternal3
indique toujours qu'elle n'a pas de référentiel distant. Je ne sais pas quel combo de commandes bash aurait trouvé ou ajusté cela.la source
J'ai eu le même problème aujourd'hui lors de la configuration de mon référentiel à partir de zéro. J'ai tout essayé, rien n'a fonctionné, sauf supprimer l'origine et la rajouter à nouveau.
la source
Nous avons eu le même problème et vous devez utiliser
J'espère que cela aidera quelqu'un confronté au même problème
la source