2015-10-09 1 views
1

J'ai oublié de rm refs/original après git filter-branch et fait git gc, qui a effacé refs. Je me suis également engagé dans le nouveau dépôt, et je voudrais garder ces engagements.oublié à RM réfs/original après git filtre-branche

La branche extraite a une taille de quelques kilo-octets, mais .git pèse toujours 80 Mo, tout comme avant le filtrage.

Maintenant, refs est vide, et je ne peux plus facilement supprimer refs/original. Comment puis-je encore retirer les originaux? Je voudrais éviter d'avoir à nouveau filter-branch si possible.

Répondre

1

Vos références ont été emballées (git gc exécute git pack-refs). Cela ne change rien aux refs eux-mêmes, sauf que plutôt que d'avoir chacun dans un fichier séparé, ils sont tous dans le "emballé" fie.

Vous avez simplement besoin de supprimer les références refs/origina/. En théorie en utilisant git update-ref -d sur chacun devrait fonctionner, mais s'il y en a beaucoup, il est probablement plus facile d'ouvrir .git/packed-refs dans votre éditeur et de supprimer manuellement toutes les lignes refs/original/.

Vous devrez peut-être également nettoyer les reflogs.

Voir this StackOverflow answer pour plus d'informations.