Задать вопрос

Как сжать папку .git?

Папка .git разрослась до 5гб.
Хочу уменьшить ее размер, т.к. не могу клонировать нормально.
Делал:
git repack -a -d --depth=250 --window=250
git clean -d -f -i
git remote prune origin

Но это не принесло результата.
Как ее уменьшить? Или как удалять коммиты старше к примеру 30 дней? Возможно ли это?
  • Вопрос задан
  • 2173 просмотра
Подписаться 8 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Вы явно делаете что-то не так, раз репо занимает столько места. Уточните, что вы там храните?
Стандартные процедуры сборки мусора и перепаковки не сильно помогут. Надо удалить лишнее руками.
Либо тупо обрезать старую историю и использовать текущее состояние проекта как начало новой истории.
git reset $(git commit-tree HEAD^{tree} -m "Новое начало истории")

Затем сделать сборку мусора
git gc --prune=now --aggressive

Но если старую историю не хочется терять, то есть рецепт с разбивкой репозитория на два. В первом будет вся старая история, а во втором вы продолжите работу над новыми фичами и сможете его легко клонировать, если не продолжите засорять мусором.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
saboteur_kiev
@saboteur_kiev Куратор тега Git
software engineer
1. git хранит всю историю. Но встроенный garbage collector может удалять коммиты, которые не привязаны ни к какой ветке. Поэтому для начала:
* Удалите ненужные бренчи.
* Выполнте "git gc --aggressive --prune" после удаления бренчей.

2. Затем нужно разобраться с тем, что у вас занимает место. Если вы напихали крупных файлов в ваш гит репо и они присутствуют в активном бренче, то никак их не удалить. Точнее можно попробовать удалить сами файлы вручную или при помощи bfg-repo-cleaner, но при этом надо синхронизировать это со всеми участниками. Если у вас гит репо локальный и никто им не пользуется, это проще. Но при этом вы ломаете коммиты - откатиться на них уже будет нельзя.

3. Наконец следует потратить вечерок и почитать про git-flow, или даже посмотреть 3-4 ютуб ролика от разных авторов которые показывают разные флоу работы с гитом. Там вы поймете почему и зачем люди пользуются rebase, squash, зачем удаляют ненужные ветки и содержат dev/master в хорошем состоянии, когда там нет промежуточных коммитов с commit message типа "апечатка" "забыл" "еще" и подобного мусора. И гит репо занимает минимальный объем.
Ответ написан
Комментировать
Комментировать
paran0id
@paran0id
Умный, но ленивый
Бинари поди храните? Или библиотеки-зависимости выкачиваете и по git add . добавляете каждый раз? Выясните, что жрёт место, настройте gitignore, почитайте про git lfs.
Ответ написан
Комментировать
Griboks
@Griboks
Никак. Git придумали для других целей. Поэтому всё, что вы можете, - это удалить историй либо даже проще пересоздать репозиторий
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽