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 на моей локальной копии, а затем нажмите изменения.

Итак, я предварительно планирую пройти следующие шаги:

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

Это звучит правильно? Это лучшее решение?

Ответы на вопрос(4)

Ваш ответ на вопрос