10
votes

Récupérer le référentiel git brisé

Mon référentiel Git de travail est cassé, il perd la piste à tous les fichiers de celui-ci, c'est-à-dire

$ git --version
git version 1.6.0.4

git

2 commentaires

Y a-t-il une branche maître dans votre référentiel? En outre, obtenez-vous un résultat différent avec git journal --all ?


Non, 'Git Branch -a' ne me dit rien.


5 Réponses :


10
votes

Il y a eu quelque chose d'autre que le clone, mais je sais à quel point il est difficile de se souvenir de ces choses.

La première chose que vous voulez faire est de regarder dans .git / REFS et voyez s'il y a quelque chose de valable là-bas (je ne suis pas trop optimiste puisque vous dites qu'il n'y a pas de branche, mais ça vaut la peine tirer). Si des réfs valides existent, vous pourrez peut-être obtenir des informations de git-reflog .

Suivant, je commencerais à consulter < Code> git-fsck . Son objectif principal est de vérifier la connectivité et la validité des objets de la base de données. Selon ce qui est arrivé exactement à votre repo, vous aurez peut-être besoin de - inaccessible ou - perdu-trouvé . Espérons que les objets sont intacts, alors tout ce que vous avez à faire est de trouver des hachages suspendus à consulter et à recréer les branches à.


1 commentaires

Merci. J'ai corrigé le référentiel manuellement. Il s'est avéré que les branches (fichiers en .git / refs / têtes) étaient manquantes, mais les objets étaient intacts. J'ai pu engager des hachages de la pointe de chaque branche à partir de .git / bûches / la tête et utilisez-les pour recréer les fichiers de branches. Je ne connaissais pas la commande git-fsck alors. Cependant, je suis toujours curieux, comment cela s'est passé-t-il évidemment, je n'ai pas fait



1
votes

Vous pouvez examiner manuellement, mais cela nécessiterait des connaissances sur le format du référentiel.

sans regarder le référentiel est difficile à dire ce qui se passe, mais un fichier probablement a été corrompu.

Exécutez Git FSCK et il indiquera si votre référentiel est toujours valide.

Postez le résultat de la course GIT FSCK et cela devrait nous aider à vous aider.


0 commentaires

2
votes

Essayez de vérifier si chacun de vos fichiers dans .git / appartient à l'utilisateur actuel.

J'ai eu le même problème, lors de la réalisation que j'ai fait des commits avec l'utilisateur root et que cela a créé des objets (sous .git / objets ) En cas d'appartenance à la racine, de trigering erreurs lors de l'exécution de git comme utilisateur régulier. p>

Cette commande a résolu le problème: p>

sudo chown jb:jb .git/ -R *


0 commentaires

1
votes

J'ai eu ce problème juste après que mon application GitHub (PC) s'est écrasée. Ma branche a disparu lorsque vous utilisez branche GIT et cela m'a empêché de faire mon premier commit. J'ai résolu en localisant ma branche dans .git / refs / têtes / et le renommer à partir de mybranch.lock à juste mybranch (retirez la serrure ).


1 commentaires

Cette réponse a aidé dans mon cas. J'utilisais GitHub pour Windows et soudain, il a soudainement traité chaque fichier dans le référentiel comme nouveau fichier. Git Log retourné "Fatal: une mauvaise révision par défaut" Head "". Git FSCK a renvoyé un tas de contrecoups pangling. Je viens de renommer le fichier master.lock à maître



0
votes

J'ai eu cette question après qu'un développeur a fait un $ git init à l'intérieur du maître nu d'un repo centralisé.

Si vous travaillez avec un référentiel sans répertoire de travail, recherchez un dossier .git ; Supprimer cela devrait corriger le problème.


0 commentaires