https://help.github.com/articles/remove-sensitive-data
я есть git-репо с некоторыми очень большими двоичными файлами. Они мне больше не нужны, и меня не волнует возможность извлекать файлы из предыдущих коммитов. Итак, чтобы уменьшить размер репо, я хочу полностью удалить двоичные файлы из истории.
После поиска в Интернете я пришел к выводу, что мой лучший (только?) Вариант - это использоватьgit-filter-branch
:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch big_1.zip big_2.zip etc.zip' HEAD
Пока это кажется хорошим подходом?
Предполагая, что ответ - да, у меня есть еще одна проблема, с которой приходится бороться.Руководство Git имеет это предупреждение:
ПРЕДУПРЕЖДЕНИЕ! Переписанная история будет иметь разные имена объектов для всех объектов и не будет сходиться с исходной ветвью. Вы не сможете легко перемещать и распространять переписанную ветку поверх оригинальной ветви. Пожалуйста, не используйте эту команду, если вы не знаете всех последствий, и избегайте ее использования в любом случае, если для решения вашей проблемы будет достаточно простого коммита. (Обратитесь к разделу «ВОССТАНОВЛЕНИЕ ИЗ РЕБАЗЫ UPSTREAM» в git-rebase (1) для получения дополнительной информации о перезаписи опубликованной истории.)
У нас есть удаленное репо на нашем сервере. Каждый разработчик подталкивает и вытягивает из него. На основании приведенного выше предупреждения (и моего понимания того, какgit-filter-branch
работает), я не думаю, что смогу бежатьgit-filter-branch
на моей локальной копии, а затем нажмите изменения.
Итак, я предварительно планирую пройти следующие шаги:
Скажите всем моим разработчикам, чтобы они фиксировали, давили и перестали работать на некоторое время.Войдите на сервер и запустите фильтр на центральном репо.Попросите всех удалить свои старые копии и снова клонировать с сервера.Это звучит правильно? Это лучшее решение?