git clone simple (clone --profondeur) manque branches distantes
Après le clonage d'un dépôt distant, il ne montre pas une branche à distance par une option. Quel pourrait être le problème? Comment le corriger? Dans cet extrait, deux des branches distantes ne sont pas affichés:
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git --version
git version 1.8.3.1
Essayé la même commande sur une autre machine, il fonctionne bien:
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
$ git --version
git version 1.7.1
Essayé également le clonage d'un autre repo, il fonctionne bien. Si je peux l'essayer sur cette machine, mais il serait mieux de savoir quel est le problème.
Des suggestions ou des conseils seront plus que bienvenus.
Edit: Réponse résumé: Depuis la version git 1.8.3.2 l' "--profondeur" et "--no-mono-branche" doivent être utilisés ensemble pour obtenir le même comportement qu'avant. Ceci est considéré comme une correction de bug.
master
est à votre succursale locale.remotes/origin/master
est la distance correspondante de la branche. Quelle est exactement la question?- Avez-vous peut-être oublier le niveau de verbosité? Essayez
git branch -avv
- Pour michaś etc: nous avons l'habitude de ne pas se référer maître comme une branche, désolé pour la confusion. ajoutée "deux branches distantes ne sont pas représentés". Pour jthill: merci pour le rappel, vous avez raison.
Vous devez vous connecter pour publier un commentaire.
Le comportement est correct, après la dernière révision le maître-branche est (puisque c'est le principal à distance de la TÊTE) la seule à distance-direction générale dans le référentiel:
Le plein clone offre de nouvelles (tous) des branches:
Peu profonde clones
En raison de la peu profonde-description dans la documentation technique, un "
git-clone --depth 20 repo
[...] suite[s] de commettre des chaînes d'une longueur d'au plus 20." Un clone simple, par conséquent, doit contenir la demande de profondeur s'engage, à partir de l'extrémité d'une branche.Comme en outre la documentation de
git clone
pour la--single-branch
-option décrit:Donc un peu clone (avec la profondeur-option) uniquement extrait seulement une seule branche (à votre demande de profondeur).
Malheureusement, les deux options (
--depth
et--single-branch
) ont été défectueuse, dans le passé, et l'utilisation de petits clones implicites des problèmes non résolus (comme vous pouvez le lire dans le lien que j'ai posté ci-dessus), qui est causée par l'histoire de réécriture. Cela conduit en général à un peu compliqué comportement dans des cas particuliers.fetch = +refs/heads/*:refs/remotes/origin/*
, et en cours d'exécutiongit fetch --depth 1
(sans--tags
). Nous pouvons également ajouter des balises spécifiques à extraire, à l'aide de config commefetch = +refs/tags/v2.0.0:refs/tags/v2.0.0
.Après avoir fait un clone simple,
pour être en mesure de checkout autres branches de la télécommande,
Run (merci @jthill):
Après cela, faire un
git fetch -v
Enfin
git checkout the-branch-i-ve-been-looking-for
L'étape 1 peut également être effectué manuellement en éditant
.git/config
.Par exemple, changer le folloing ligne à partir de:
à (remplacer
master
avec*
):git remote set-branches origin '*'
pour toutes les branches, remplacer le*
avec un branchname pour un.missing reference
erreur.-vvv
dire dansgit fetch -vvv
? Je coundn pas trouver toutes les informations à ce sujet dans git-fetch docverbosity
oudebug
niveau de journalisation degit
. Il n'est pas defetch
méthode.De lire les réponses et les commentaires de @jthill, la chose qui a le mieux fonctionné pour moi a été d'utiliser le
set-branches
option sur lagit remote
commande:Cela modifie la liste des branches suivies par le nommé distance de sorte que nous pouvons récupérer la caisse et juste le nécessaire branche.
git remote set-branches --add origin 'remote_branch_name'
de sorte que la nouvelle direction est en plus de ceux existants, plutôt que de les remplacer dans la distance de la liste des branches (ou de la branche modèles) à récupérer dans le .git/config fichier.'
est important dansgit remote set-branches --add origin 'remote_branch_name'