2011-06-19 9 views
80

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

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

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

Невозможно создать новую резервную копию. Предыдущей резервной копии уже существует в ссылках/оригинал/
Force перезаписана резервной копии с -f
гт: не может удалить /.git-rewrite/backup-refs: Отказано в
гт: не может удалить каталог /.git-rewrite: Справочник не пуст

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

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

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

+1

Для поисковых систем: это также может применяться, когда ваше сообщение об ошибке ' .git-rewrite уже существует, удалите его. –

ответ

158

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

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

git filter-branch -f \ 
--index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD 
+7

Наконец-то его заработали, спасибо! Я попробовал флаг -f, но проблема была в том, что я поставил его в конце команды, например. HEAD -f. Увидев вашу команду, я попытался поставить флаг в начале, и это сработало! = D – Cardin

+11

флаги опций ('-f') идут перед refs (' HEAD'). refs go last – knittl

+0

Я по-прежнему получаю ту же ошибку после добавления -f И удаления каталога. Есть идеи? – Yaron

1

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

+0

да, добавьте флаг «-f» – Patric

4

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

+0

Такая же проблема. Нет файла '.git/упакованный-refs', и папка' original' в '.git/refs' отсутствует. Кто угодно? – XedinUnknown

+0

Решено [здесь] (http://stackoverflow.com/questions/18746580/removing-history-from-git-git-command-fails), добавив флаг '-r' для команды. – XedinUnknown

+0

Такая же проблема здесь. Удаление упакованных-refs решило проблему, но также разрушило остальную часть моей директории git, и мне пришлось восстановить ее из резервной копии. –

8

Используйте эту команду, чтобы удалить оригинальную копию:

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

Вот суть я отфильтровывает ветвь мой мерзавец репо: https://gist.github.com/k06a/25a0214c98bc19fd6817

 Смежные вопросы

  • Нет связанных вопросов^_^