Очистка истории мерзавцев - PullRequest
3 голосов
/ 24 марта 2012

В одном из моих проектов (зарегистрирован в репозитории git) я добавил огромный каталог (15000 файлов, 3 ГБ). Когда я понял, что это неправильно, я удалил его, но, похоже, он все еще в истории.

Наличие этого файла делает клон проекта очень долгой задачей. После клонирования проекта каталог .git занимает около 4 ГБ, но реальный размер проекта составляет всего 15 МБ.

Мой вопрос: как я могу настроить историю, например, чтобы убедиться, что каталог 3GB удален? Или есть другой способ уменьшить размер загрузки всего проекта и ускорить процесс клонирования?

Ответы [ 2 ]

4 голосов
/ 26 марта 2012

Итак, вы знаете, какой коммит ввел огромный каталог. Скажем, это было сделано в ревизии AAAAAAA.

Чтобы избавиться от коммита, недостаточно удалить каталог (с коммитом BBBBBBB) и выполнить повторную регистрацию: коммит AAAAAAA все еще там, взорвав ваш размер репо.

Чтобы избавиться от коммита, нам нужно git rebase. Откройте консоль git и введите

git rebase -i AAAAAAA~1

Откроется редактор, в котором коммит AAAAAAA находится в первой строке. Удалите эту строку (т. Е. Когда Vim является вашим редактором, нажмите d d ) и подтвердите, где вы снова удалили каталог (BBBBBBB), сохраните файл и выйдите (:wqa).

После этого начинается перебазировка, и когда она заканчивается, AAAAAAA и BBBBBBB больше не существует. На самом деле.

Теперь вы также можете вызвать уборку с помощью git gc и принести чашку кофе во время работы.


См. Также этот ответ: git push heroku - прекратить загрузку герои / загрузку массивного файла

1 голос
/ 24 марта 2012

Попробуйте следовать этому руководству: http://book.git -scm.com / 4_undoing_in_git _-_ reset, _checkout_and_revert.html

По сути, вы можете сделать

git reset --hard HEAD~1

или

git reset --hard [prev_commit]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...