Ich habe versucht, eine Datei aus meinem Remote-Repo zu entfernen, indem ich Folgendes ausgeführt habe:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Aber Git beschwert sich darüber
Es kann kein neues Backup erstellt werden. Eine frühere Sicherung ist bereits in refs / original /
Force vorhanden. Überschreiben der Sicherung mit -f
rm: /.git-rewrite/backup-refs kann nicht entfernt werden: Berechtigung verweigert
rm: Verzeichnis kann nicht entfernt werden /.git-rewrite: Verzeichnis nicht leer
Dies geschah, nachdem ich das Verzeichnis .git-rewrite unter Windows bereits gelöscht hatte.
Wie kann ich diese Datei entfernen? Es ist eine 29-MB-Datei, die sich auf meinem Repo befindet, daher muss ich die Datei unbedingt entfernen.
Ich habe versucht, das Commit in zu löschen git rebase -i
, aber anscheinend, weil das Commit viele verschiedene Dateien berührt hat, beschwert sich Git über Konflikte und ich habe aus Sicherheitsgründen abgebrochen.
quelle
.git-rewrite already exists, please remove it
.Antworten:
Sie haben bereits eine Filterverzweigungsoperation ausgeführt. Nach der Filterverzweigung behält Git die Refs zu den alten Commits bei, falls etwas schief geht.
Sie finden diese in
.git/refs/original/…
. Löschen Sie entweder dieses Verzeichnis und alle darin enthaltenen Dateien oder verwenden Sie das-f
Flag, um Git zu zwingen, die alten Referenzen zu löschen.quelle
-f
) stehen vor refs (HEAD
). refs gehen zuletztgit add
. Ich habe den gleichen Fehler wie das Originalposter erhalten, auch nachdem ich den.git/refs/original/
Ordner gelöscht und das-f
Flag imgit filter-branch
Befehl verwendet habe. In meinem Fall bestand die Lösung darin, die.git/packed-refs
Datei zu löschen .--ignore-unmatch
Befehl hinzugefügtgit rm
und es lief reibungslos!Verwenden Sie diesen Befehl, um die ursprüngliche Sicherung zu entfernen:
Hier ist das Wesentliche, mit dem ich mein Git-Repo gefiltert habe: https://gist.github.com/k06a/25a0214c98bc19fd6817
quelle
.git/refs/original/
löst das Problem nicht.git show-ref | awk '/ refs.original.refs/{print$2}'
um alle Backups zu finden, die Ihr Repo hat.Ich hatte das gleiche Problem und die obige Antwort hat es nicht behoben. Es war kein .git / refs / original / -Verzeichnis mehr vorhanden. Die Lösung für mich war, die .git / packed-refs-Datei zu löschen.
quelle
.git/packed-refs
Datei und kein Ordneroriginal
in.git/refs
. Jemand?-r
Flags zum Befehl behoben .Fügen Sie dem Filterfilterbefehl eine Kraft hinzu.
quelle