Я запускаю проект, используя git, где я буду делать очень большие файлы, но только несколько раз в неделю. Я попытался использовать git as-is и, кажется, сохранил весь файл в каждой фиксации, где он был изменен. Это не будет работать для этого проекта, хранилище будет выходить из-под контроля. Итак, я хочу уменьшить размер репозитория.
Моя первая мысль заключалась в том, чтобы "просто" удалить все коммиты старше, чем две недели, или только сохранить, например. пять коммитов в истории (это, наверное, лучше:)) Я много раз искал и читал много из "Сообщество" git, и мне кажется, мне нужно работать с git-rebase
или git-filter-branch
. Дело в том, что я просто не могу заставить его работать.
Просто для иллюстрации; У меня есть история H с одной ветвью (ведущая ветка)
A → B → C → D → E
Я хочу удалить некоторые предыдущие коммиты, чтобы моя история выглядела как
C → D → E
Заблокировать A и B следует полностью очистить. Я пробовал git-rebase
, но он, похоже, объединяется, а не удаляет старые, возможно, я не совсем понимаю, как работает rebase. Еще одна мысль, которую я имел, заключалась в том, чтобы удалить все из .git/objects, а затем создать new commit с использованием git-hash-object -w
, git-mktree
и git-commit-tree
, мне еще не удалось направить это "искусственное" дерево на сервер.
Я не буду работать с любыми веткими, поэтому нет необходимости принимать это во внимание.
Что мне интересно, может ли кто-нибудь дать мне конкретные способы использования git-rebase
, если это то, что я должен использовать? Или некоторые другие советы, примеры того, что я могу сделать.
Ура!
Edit:
Большие файлы будут не такими же большими файлами, а некоторые файлы будут заменены новыми файлами. Я хочу, чтобы эти замененные файлы были полностью очищены из истории.