Ошибка очистки файла из Git-репозитория, невозможно создать новую резервную копию
Я попытался удалить файл из моего удаленного репо, запустив:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Но Гит жалуется, что
Невозможно создать новую резервную копию. Предыдущая резервная копия уже существует в refs/original/
Принудительно перезаписать резервную копию с -f
rm: невозможно удалить /.git-rewrite/backup-refs: разрешение отклонено
rm: невозможно удалить каталог /.git-rewrite: каталог не пустой
Это было после того, как я уже удалил каталог.git-rewrite в Windows.
Как я могу удалить этот файл? Это 29 МБ файл, который хранится в моем репо, поэтому мне нужно удалить его.
Я пытался удалить коммит в git rebase -i
, но, очевидно, поскольку коммит затрагивал много разных файлов, Git жалуется на конфликты, и я прервал работу, чтобы быть в безопасности.
4 ответа
Вы уже выполнили операцию ветки фильтра. После ответвления фильтра Git сохраняет ссылки на старые коммиты на случай, если что-то пойдет не так.
Вы можете найти их в .git/refs/original/…
, Либо удалите этот каталог и все файлы в нем, либо используйте -f
флаг, чтобы заставить Git удалить старые ссылки.
git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
Используйте эту команду для удаления оригинальной резервной копии:
git update-ref -d refs/original/refs/heads/master
Вот суть, которую я использовал для фильтрации-ветвления моего репозитория git: https://gist.github.com/k06a/25a0214c98bc19fd6817
У меня была та же проблема, и ответ выше не решил ее. Каталога.git/refs/original/ не осталось. Решением для меня было удалить файл.git/pack-refs.