Удаление больших файлов из индекса git и синхронизация всех веток - PullRequest
0 голосов
/ 15 февраля 2019

После удаления индексов с помощью git filter-branch толчок коллеги возвращает старые индексы.

Я запустил репозиторий bitbucket, и его размер вырос до 2 ГБ, где он стал доступен только для чтения.Чтобы исправить ситуацию, они рекомендуют восстановить предыдущий коммит и очистить мой индекс веткой git filter.Что я и сделал, с успехом.Сделав это и обрезав, размер пакета локального размера (git count-objects) уменьшился до 300 МБ.Однако битбакет только уменьшился до 1,2 ГБ, я не понимаю разницу, но есть большая проблема.

Когда мой коллега, который также использует эту ветвь, выдвинул больше изменений, размер снова поднялся до2 Гб.Очевидно, у них все еще были индексы локально (хотя они сначала сделали git pull).

Команды, которые я выполнял, были ...

git filter-branch --force --index-filter 'git rm -r --ignore-unmatch NAME_OF_DIRECTORY_I_DONT_WANT_ANYMORE' --prune-empty --tag-name-filter cat -- --all

Повторяются для всех соответствующих каталогов, а затем:

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

git reflog expire --expire=now --all

git gc --prune=now --aggressive

git push --all --force

1.) Я не понимаю, чтослучилось, может кто-нибудь просветить меня?

2.) Когда я снова исправляю ситуацию, используя git filter-branch, pruning и т. д. и отправляя на сервер, как я могу гарантировать, что мой коллега также получит эти изменения?То есть мы не повторяем цикл постоянно?

1 Ответ

0 голосов
/ 15 февраля 2019

Самый радикальный способ: заставить их начать с нового клона git.

Если им нужно сохранить несколько локальных веток: один из основных способов - скопировать файлы из своего старого клона в новый клон;Другой способ - добавить старое хранилище в качестве удаленного для нового клона, затем выбрать + перебазировать.

Один из способов избежать повторного появления одной из удаленных вами папок - добавить ловушку предварительного получения на вашgit-сервер, который будет отклонять любой коммит, содержащий одну из запрещенных папок, или предварительную зацепку для репо ваших коллег

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