Как можно облегчить репозиторий?
Я бы хотел почистить реп, чтобы освободить место. Не нашел в инете инфу, но у меня в голове такой порядок действий.
- Сделать новую ветку
- Залить туда фулл проект
- Удалить все ветки, кроме новой
- Почистить историю репа и сделать коммит с мигрейтом проекта - стартовым
По итогу получаю чистый реп. Люди, которые работают с репозиторием -в пассивном режиме подкачивают этот коммит и все найс.
Есть ли инструменты для такой манипуляции?
Удалить реп и залить заново - плохой поинт и не стоит того.
P.S. В идеале, хотелось бы найти функцию - мол, чтобы не пушить еще раз весь проект, которая делает из мастер ветки - фулл версию проекта. ЧТобы избавиться от коммитов где тестился функционал, обновлялся сторонний софт и т.д.
Реп весил 100 гб. После создания нового - вес опустился до 30. Сейчас на новом репе уже обновили wwise и прилетели лишние 10 ГБ ,которые можно убрать, в теории.
Ответы (1 шт):
Вот способ оставить только один комит с текущим состоянием и удалить всю историю (сделайте только резервную копию перед началом экспериментов).
git checkout master
git checkout --orphan newBranch # создаем временную ветку
git add -A # добавляем в него все файлы
git commit # комитим
git branch -D master # удаляем master
git branch -m master # переименовываем текущую ветку в master
git push -f origin master # делаем force push чтоб перезаписать master в origin
git gc --aggressive --prune=all # чистим старые комиты
Эту операцию нужно повторить для всех веток.
Нужно понимать, что:
- Тут я предполагаю, что главный бранч называется
masterи его состояние мы хотим сохранить. Другие ветки останутся и все файлы и версии доступные на тех ветках не будут удалены. Нужно другие ветки поудалять отдельно локально (git branch -D <branch_name>) и в remote репозитории (git push origin --delete <branch_name>). - теги ссылаются на комиты и если их не удалить, они точно также будут "держать" файлы. Нужно их поудалять локально (
git tag -d <tag_name>) и в remote репозитории (git push --delete origin <tag_name>)