2009-07-25 5 views
1

J'ai fait face à un problème étrange avec mon repo git. En cours de clonage, il perd toutes ses têtes sauf le maître. Est-ce que la tête n'est pas simplement une référence de fichier à l'identifiant de validation? Ou il devrait être enregistré ailleurs pour être cloné?Tête disparaissant dans le repo git

Il ressemble exactement comme William Pursell décrit:

cd a 
$ git branch 
    master 
    * test 
$ cd .. 
$ git clone a b 
Initialized empty Git repository in /private/tmp/b/.git/ 
$ cd b 
$ git branch 
    * master 
+1

Veuillez développer. Quand vous dites 'dans le processus de clonage', voulez-vous dire que la source perd des branches, ou que la cible du clone n'a pas toutes les branches des sources. Aussi, quelles commandes utilisez-vous pour le déterminer? –

+0

Désolé de ne pas être clair. –

+0

Il n'y a pas besoin d'être désolé, il suffit de modifier votre question avec des détails de clarification, puis les questionnaires potentiels peuvent aider avec des réponses qui ne sont pas purement basées sur des conjectures. –

Répondre

3

Peut-être que vous n'avez pas poussé toutes vos succursales à votre dépôt distant. Le clonage d'un référentiel distant doit automatiquement inclure toutes les branches distantes.

Notez que les branches distantes ne deviennent pas automatiquement des branches locales. Vous pouvez utiliser la commande git branch -a pour voir toutes les branches que vous avez. Exemple:

$ git branch -a 
* master 
    remotes/origin/next 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

Avec cela, nous pouvons tourner la « prochaine » branche à distance dans un local avec git checkout -b et préciser la branche à distance comme point de départ:

$ git co -b next origin/next 
Branch next set up to track remote branch next from origin. 
Switched to a new branch 'next' 

Et maintenant vous êtes tous régler pour travailler sur "suivant".

1

Je pense qu'il y a quelque chose qui ne va pas avec votre installation git de William Pursell. S'il vous plaît envisager d'enregistrer un rapport de bug. Ce que git clone devrait faire, c'est de copier les têtes distantes dans refs/remotes/origin/* et ensuite extraire une nouvelle branche avec le même nom et l'état que ce qui est extrait comme HEAD de la télécommande.

Dans votre cas, git branch montre que test est cochée sur le repostiory source, donc git clone devrait créer une branche test dans le référentiel de destination en fonction de la branche test à distance.

Voici ce que je reçois.

$ cd a 
$ git branch 
    master 
* test 
$ cd .. 
$ git clone a b 
Initialized empty Git repository in /home/charles/src/gittest/b/.git/ 
$ cd b 
$ git branch 
* test 
$ git branch -a 
* test 
    remotes/origin/HEAD -> origin/test 
    remotes/origin/master 
    remotes/origin/test 
$ git config branch.test.remote 
origin 
$ git config branch.test.merge 
refs/heads/test 
Questions connexes