Próbowałem usunąć plik z mojego zdalnego repozytorium, uruchamiając:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Ale Git narzeka na to
Nie można utworzyć nowej kopii zapasowej. Poprzednia kopia zapasowa już istnieje w refs / original /
Force nadpisanie kopii zapasowej za pomocą -f
rm: nie można usunąć /.git-rewrite/backup-refs: Odmowa uprawnień
rm: nie można usunąć katalogu /.git-rewrite: Katalog nie jest pusty
To było po tym, jak już usunąłem katalog .git-rewrite w systemie Windows.
Jak mogę usunąć ten plik? Jest to plik 29 MB znajdujący się w moim repozytorium, więc muszę go usunąć.
Próbowałem usunąć zatwierdzenie w git rebase -i
, ale najwyraźniej ponieważ zatwierdzenie dotknęło wielu różnych plików, Git skarży się na konflikty i przerwałem, aby być bezpiecznym.
.git-rewrite already exists, please remove it
.Odpowiedzi:
Wykonałeś już operację rozgałęzienia filtra. Po filter-branch, Git zachowuje odniesienia do starych zatwierdzeń, na wypadek gdyby coś poszło nie tak.
Możesz je znaleźć w
.git/refs/original/…
. Usuń ten katalog i wszystkie znajdujące się w nim pliki lub użyj-f
flagi, aby zmusić Git do usunięcia starych odniesień.źródło
-f
) znajdują się przed refs (HEAD
). refs go lastgit add
. Otrzymałem ten sam błąd, co oryginalny plakat, nawet po usunięciu.git/refs/original/
folderu i użyciu-f
flagi wgit filter-branch
poleceniu. Rozwiązaniem w moim przypadku było usunięcie.git/packed-refs
pliku.--ignore-unmatch
do poleceniagit rm
i poszło gładko!Użyj tego polecenia, aby usunąć oryginalną kopię zapasową:
Oto sedno, którego użyłem do filtrowania rozgałęzień mojego repozytorium git: https://gist.github.com/k06a/25a0214c98bc19fd6817
źródło
.git/refs/original/
nie rozwiązuje problemu.git show-ref | awk '/ refs.original.refs/{print$2}'
aby znaleźć wszystkie kopie zapasowe w repozytorium.Miałem ten sam problem i powyższa odpowiedź go nie rozwiązała. Nie pozostał żaden katalog .git / refs / original /. Rozwiązaniem dla mnie było usunięcie pliku .git /pack-refs.
źródło
.git/packed-refs
pliku, jednak i nie folderuoriginal
w.git/refs
. Ktoś?-r
flagę do polecenia.Dodaj siłę do polecenia filter branch.
źródło