Ошибка очистки файла из Git-репозитория, невозможно создать новую резервную копию - PullRequest
98 голосов
/ 19 июня 2011

Я попытался удалить файл из моего удаленного репозитория, выполнив:

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

Но Git жалуется, что

Не удается создать новую резервную копию.Предыдущая резервная копия уже существует в refs / original /
Принудительная перезапись резервной копии с -f
rm: невозможно удалить /.git-rewrite/backup-refs: разрешение отклонено
rm: невозможно удалить каталог /.git-rewrite: каталог не пустой

Это было после того, как я уже удалил каталог .git-rewrite в Windows.

Как я могу удалить этот файл?Это 29 МБ файл, который хранится в моем репо, поэтому мне нужно удалить его.

Я пытался удалить коммит в git rebase -i, но, очевидно, поскольку коммит коснулся множества разных файлов, Git жалуется на конфликты, и я прервал его, чтобы быть в безопасности.

Ответы [ 4 ]

194 голосов
/ 19 июня 2011

Вы уже выполнили операцию ветвления фильтра.После ответвления фильтра Git сохраняет ссылки на старые коммиты, если что-то пойдет не так.

Вы можете найти их в .git/refs/original/….Либо удалите этот каталог и все файлы в нем, либо используйте флаг -f, чтобы заставить Git удалить старые ссылки.

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
17 голосов
/ 09 декабря 2015

Используйте эту команду для удаления оригинальной резервной копии:

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

Вот суть, которую я использовал для фильтрации-ветвления моего git repo: https://gist.github.com/k06a/25a0214c98bc19fd6817

4 голосов
/ 24 апреля 2015

У меня была та же проблема, и ответ выше не решил ее.Не было никакого каталога .git / refs / original /.Решением для меня было удалить файл .git / pack-refs.

2 голосов
/ 19 июня 2011

Добавьте силу к команде ответвления фильтра.

...