Не удалось очистить файл из репозитория Git, не удалось создать новую резервную копию


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

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

но ГИТ жалуется, что

не удается создать новую резервную копию. Предыдущая резервная копия уже существует в refs / original/
Принудительная перезапись резервной копии с помощью-f
rm: не удается удалить /.ГИТ-рерайт/резервное копирование-ссылки : доступ запрещен
РМ: не удается удалить каталог /.git-переписать: Каталог не пустой

Это было после того как я уже удалил .git-переписать каталог на Windows.

Как я могу удалить этот файл? Это 29Mb файл, сидящий на моем РЕПО, поэтому мне очень нужно удалить файл.

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

4 88

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 / packed-refs файл.

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