2016-10-18 8 views
2

Мой репозиторий очень большой из-за больших файлов в истории. Для нахождения больших файлов и удалить их, я уверен, выполнение:Не удается найти большие файлы в истории репозитория git

$ git verify-pack -v .git/objects/pack/pack-..e8a.idx | sort -k 3 -n | tail -3 

и результат что-то вроде:

12eb660ea206e1b7bd42cb8b525aabe9e86a5064 blob 56413247 15833578 5889838 
89b377ace5639c0914bb49d28d0c8e97b0f19a16 blob 56414112 15833631 81736530 
4ea83fb57b49f7afdbe99e4f043509d184338f5b blob 56426618 15837504 48628334 

Чтобы найти путь самого большого файла, я бегу:

$ git rev-list --objects --all | grep 4ea83fb57b49f 

и результат:

4ea83fb57b49f7afdbe99e4f043509d184338f5b path/to/my/large_file 

но, когда я бегу git log на этот файл как:

$ git log --oneline --branches -- path/to/my/large_file 

Нет журнала не отображается. Кроме того, всякий раз, когда я пытаюсь удалить двоичный файл из истории по:

$ git filter-branch --index-filter \ 
'git rm --ignore-unmatch --cached path/to/my/large_file' 

я получаю:

WARNING: Ref 'refs/heads/master' is unchanged 

Любые идеи?

ответ

1

Возможно, путь к крупным объектам расположен в разных ветках. Используйте команду --all в команде filter-branch, чтобы удалить большие файлы со всех ветвей.

+0

Спасибо, длинный рассказ для простого ответа. :) Моя ошибка не использовалась - все в конце 'git filter-branch'. Исправьте свой ответ, чтобы я мог его принять. – hsalimi

+0

Рад, что это было полезно. На самом деле команда 'filter-branch', которую я разместил, уже содержит параметр -all. – mcns7