J'ai une boîte à vitres qui l'a prise dans la tête pour supprimer la majeure partie d'un référentiel git (doit avoir déclenché le détecteur de travail important;). Tout ce que j'ai laissé (que je peux trouver) est les objets. Je ne sais pas à quel point la collecte d'objets est complète, non plus. Est-il possible de récupérer des choses de juste les objets? Pour autant que je puisse dire, l'arborescence d'objets est intacte. Tous les paquets et objets en vrac sont en place; Je n'ai tout simplement pas les métadonnées pour convaincre Git. P>
3 Réponses :
Si vous n'avez pas déjà essayé Git Checkout Master Code>, je commencerais avec ça. P>
Il ne peut pas trouver un référentiel git. "Fatal: pas un référentiel git (ou un parent jusqu'à montage parent). Arrêt de la limite de système de fichiers (git_discovery_across_fileSystem pas défini)."
Essayez d'utiliser ce message p>
Comment récupérer des objets Git endommagés par un disque dur échec? p>
Cette réponse peut avoir des informations connexes * Nix. Laissez-moi savoir si cela aide. P>
Je vais voir ce que ça fait. P>
On dirait que les premières commandes peuvent être utiles. Il vous montre comment déballer le dossier Pack des objets
Oui, je vais prendre ça pour un tour. Ai-je besoin d'introduire un nouveau repo git maintenant?
probablement pas. Je recommanderais de sauvegarder ce que vous avez pour que vous ne perdiez plus. Je dois courir pour le moment. Je vais vérifier quand je reviens.
Je ne pense pas que c'est l'approche optimale. Aucun élément de preuve, les objets ont été endommagés afin de déballer et de récupérer des objets ne devraient pas être nécessaires. Il devrait suffire de récupérer les objets - emballés ou en vrac - dans un référentiel git de travail et en passant de là.
Si vous avez des exemples de comment faire cela, je serai plus disposé à les mettre en place
La première chose que j'essaierais, c'est d'initialiser un nouveau référentiel avec Avec une chance, vous verrez beaucoup d'objets suspendus et avec un peu plus de chance certains des objets dangereux seront des objets qui seront les conseils de branches perdues. P>
Si vous exécutez pour "récupérer" eux, vous pouvez simplement utiliser git init code>. Ensuite, je copierais le répertoire des objets du référentiel mort dans le nouveau référentiel. Ensuite, j'exécuterais
git fsck code> dans le nouveau référentiel. P>
git show ou / ou
Git journal code> sur ces commits, vous pourrez peut-être reconnaître certaines des branches. P>
branche git code> pour recréer des branches nommées. P>
Impressionnant! J'ai un autre fichier Sha-1 que j'ai besoin de déterminer comment renommer (witless renommé-le à E code> qui n'est pas utile), et j'ai besoin de me racher la tête, mais cela a bien fonctionné. Cheers, Charles!
Je ne sais pas comment trouver le nom original d'un commit, mais réaménager la tête était aussi simple que git checkout
maître code> branche. Maintenant, j'ai besoin de trouver ce que
00 / e code> devrait i> être.
@JASKEK: Si l'objet LOCT est valide, vous pouvez également "tromper" git dans la lecture de la lecture d'un objet d'objet lâche non liée (probablement) ("corruption" démontré dans SO5585388 ), puis écrivez-le sur le bon chemin. bash -c 'i = 1; tandis que n = $ (printf% 040x $ i) && git cat-file -s -s "$ n"> / dev / null 2> & 1; Est-ce que je lais i ++; terminé; p = $ (printf .git / objets /%. 2S /% s "$ n" "$ {n # ??}"); écho "Utilisation du nom d'objet Temp $ n à $ p"; SET -X; cp -p "$ 1" "$ p" && t = $ (git cat-fichier -t "$ n") && git cat-fichier "$ t" "$ n" | git hash-objet --stdin -t "$ t" -w && rm -f "$ p" '- .git / objets / 00 / e code>
@Chris - c'est juste ... Woah. Cela prend le gâteau pour la meilleure bash tordue que j'ai jamais vue. Je a fait i> rétablir pour récupérer le fichier: GIT a signalé un fichier supprimé de la caisse, alors je suis allé à la chasse, j'ai trouvé le fichier et déplacé.
Que voulez-vous dire par les objets?
Littéralement, c'est mon repo.
ls repo.git code> donne des "objets" seulement.
Que montre cette commande
git show -s code>
Fatal: Pas un référentiel git code>.
Eh bien, il semble que Git ne fonctionnera pas pour vous. Je suis malade de voir s'il y a un moyen de décoder les blobs.
Bravo, Jason. Très appréciée.
Affiche l'arborescence d'objets, abondamment jonchée d'objets. C'est tout ce que j'ai. Pas de REF, pas de journaux, de rien que des objets.