J'ai essayé de supprimer un fichier de mon dépôt distant en exécutant:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Mais Git se plaint que
Impossible de créer une nouvelle sauvegarde. Une sauvegarde précédente existe déjà dans refs / original /
Force l'écrasement de la sauvegarde avec -f
rm: impossible de supprimer /.git-rewrite/backup-refs: Autorisation refusée
rm: impossible de supprimer le répertoire /.git-rewrite: Répertoire non vide
C'était après avoir déjà supprimé le répertoire .git-rewrite sous Windows.
Comment puis-je supprimer ce fichier? C'est un fichier de 29 Mo assis sur mon dépôt, 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 abandonné pour être sûr.
.git-rewrite already exists, please remove it
.Réponses:
Vous avez déjà effectué une opération de branchement de filtre. Après filter-branch, Git conserve les références des anciens commits, au cas où quelque chose ne va pas.
Vous pouvez les trouver dans
.git/refs/original/…
. Supprimez ce répertoire et tous les fichiers qu'il contient, ou utilisez l'-f
indicateur pour forcer Git à supprimer les anciennes références.la source
-f
) précèdent les refs (HEAD
). les arbitres vont en derniergit add
. Je recevais la même erreur que l'affiche originale même après avoir supprimé le.git/refs/original/
dossier et utilisé le-f
drapeau dans lagit filter-branch
commande. La solution, dans mon cas, était de supprimer le.git/packed-refs
fichier.--ignore-unmatch
à la commandegit rm
et ça s'est bien passé!Utilisez cette commande pour supprimer la sauvegarde d'origine:
Voici l'essentiel que j'ai utilisé pour filtrer mon dépôt git: https://gist.github.com/k06a/25a0214c98bc19fd6817
la source
.git/refs/original/
ne résout pas le problème.git show-ref | awk '/ refs.original.refs/{print$2}'
pour trouver toutes les sauvegardes de votre dépôt.J'ai eu le même problème et la réponse ci-dessus ne l'a pas résolu. Il n'y avait plus de répertoire .git / refs / original /. La solution pour moi a été de supprimer le fichier .git / compressé-refs.
la source
.git/packed-refs
fichier, cependant, et aucun dossieroriginal
au format.git/refs
. N'importe qui?-r
indicateur à la commande.Ajoutez une force à la commande de branche de filtre.
la source