@strelkovandreyv

Как в GitLab удалить коммиты старше 1года?

Добрый день, в силу определенной специфики проекта он на текущий момент имеет 60 000 коммитов и соотвественно их количество растёт десятками раз в день.
Скажите пожалуйста как можно удалить коммиты которые например старше 1 года?
  • Вопрос задан
  • 1507 просмотров
Пригласить эксперта
Ответы на вопрос 2
Scorpi
@Scorpi
bogdan.org.ua/2011/03/28/how-to-truncate-git-histo...

#!/bin/bash
git checkout --orphan temp $1
git commit -m "Truncated history"
git rebase --onto temp $1 master
git branch -D temp
# The following 2 commands are optional - they keep your git repo in good shape.
git prune --progress # delete all the objects w/o references
git gc --aggressive # aggressively collect garbage; may take a lot of time on large repos
Ответ написан
Комментировать
gecube
@gecube
системный администратор, программист... все дела..
Это плохая идея, т.к. у вас каждый последующий коммит зависит от предыдущего. И у всех коммитов после схлопывания изменится sha.
Коллеги уже выше дали информацию как пользоваться командой rebase для этой цели.
Это означает, что после "схлопывания" нужно будет всем пользователям репозитория у себя его полностью перекачать, а старые копии удалить.
Само по себе количество коммитов как правило не является лимитом или ограничением при работе с большим репозиторием. Есть ограничение по размеру в самом Гитлабе, но обычно его хватает за глаза для проекта любого разумного размера. А если у Вас монорепозиторий и он вылез за границы лимиты, то либо переезжаете на свой инстанс гитлаба, либо пора проект делить на модули, каждый в отдельном репозитории.

Ещё хочу добавить, что у git clone есть чудесный параметр depth, который позволяет ограничить глубину клонирования репозитория, если хочется сэкономить трафик и история с самого начала не нужна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы