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

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

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 жалуется на конфликты и я прерван, чтобы быть в безопасности.

+77
19 июн. '11 в 16:24
источник поделиться
4 ответа

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

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

git filter-branch -f \
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
+155
19 июн. '11 в 18:37
источник

Связанные вопросы


Похожие вопросы

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

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

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

+6
09 дек. '15 в 11:19
источник

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

+4
23 апр. '15 в 23:39
источник

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

0
19 июн. '11 в 18:31
источник

Посмотрите другие вопросы по меткам или Задайте вопрос