У меня размещенный репозиторий GIT с ограниченным доступным дисковым пространством, но он подключен к системе RedMine. Я упаковываю какое-то программное обеспечение и нажимаю и тяну репозиторий, у меня заканчивается место. Теперь мне нужно очистить (пакеты больше не нужны). Как мне удалить эти пакеты из истории удаленного репозитория, учитывая, что я не могу воссоздать репозиторий (он слишком жестко привязан к RedMine)?
Как очистить удаленный репозиторий GIT?
Ответы (2)
Вы можете использовать git rebase -i
, чтобы «сжать» некоторые коммиты вместе, чтобы промежуточные звенья больше не были в репозитории, а затем git push -f
их на сервере. Но перебазирование вызывает проблемы, если другие используют тот же репозиторий.
Кроме того, исходные версии и связанные с ними файлы будут фактически удалены из репозитория только после завершения сборки мусора (я думаю, вы не можете сделать это удаленно, но это должно происходить автоматически) и они больше не упоминается в рефлоге (по умолчанию записи остаются там 90 дней).
Вот почему вам не следует использовать VCS (систему контроля версий), такую как Git (который является DVCS), или любую другую VCS для управления пакетами и выпусками.
См. Рекомендации по хранению файлов .jar в VCS (SVN, Git,…).
Внешний репозиторий артефактов, например Nexus, более адаптирован, особенно когда дело касается очистки вверх и удалите старые упакованные версии вашего программного обеспечения.
Я не понимаю, как вы можете изменить что-либо в истории Git вашего репо при сохранении связи между указанным репо и вашей системой RedMine: любое изменение вызовет новую ссылку SHA1.