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.
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
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
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.