Purge fichier de Git repo échoué, incapable de créer une nouvelle sauvegarde

j'ai essayé de supprimer un fichier de mon repo distant en exécutant:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD

mais Git se plaint que

ne peut pas créer une nouvelle sauvegarde. Une précédente sauvegarde existe déjà dans refs / original /

La Force d'écraser la sauvegarde avec -f

rm: ne peut supprimer/.git-rewrite/backup-refs: Permission refusée

rm: impossible de supprimer directory/.git-réécriture : Répertoire non vide

C'était après que j'ai déjà supprimé le .répertoire git-rewrite sur Windows.

Comment puis-je supprimer ce fichier? C'est un fichier de 29 Mo qui se trouve sur mon compte, donc j'ai tout à fait besoin de supprimer le fichier.

j'ai essayé de supprimer le commit dans git rebase -i , mais apparemment parce que le commit a touché beaucoup de fichiers différents, Git se plaint de conflits et j'ai avorté pour être sûr.

88
demandé sur Roberto Tyley 2011-06-19 20:24:17

4 réponses

vous avez déjà effectué une opération de branche filtrante. Après filter-branch, Git garde des références aux anciennes commits around, au cas où quelque chose tourne mal.

vous pouvez trouver ceux dans .git/refs/original/… . Soit supprimer ce répertoire et tous les fichiers qu'il contient, soit utiliser l'option -f pour forcer Git à supprimer les anciennes références.

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
171
répondu knittl 2014-04-04 00:53:09

Utilisez cette commande pour supprimer la sauvegarde d'origine:

git update-ref -d refs/original/refs/heads/master

Voici gist que j'ai utilisé pour filtrer-branche mon git repo: https://gist.github.com/k06a/25a0214c98bc19fd6817

11
répondu k06a 2016-02-10 20:13:38

j'ai eu le même problème et la réponse ci-dessus ne l'a pas corrigé. Il n'y avait pas .git/refs/ original / répertoire gauche. La solution pour moi était de supprimer le .git/emballé-réf fichier.

4
répondu Yaron 2015-04-23 23:39:33

ajouter une force à la commande filter branch.

1
répondu Adam Dymitruk 2011-06-19 18:31:34