Я запускаю проект с использованием git, где я буду фиксировать очень большие файлы, но только несколько раз в неделю.Я пытался использовать git как есть, и кажется, что он сохраняет весь файл в каждом коммите, где он изменяется.Это не будет работать для этого проекта, хранилище выйдет из-под контроля.Итак, я хочу уменьшить размер репозитория.
Моей первой мыслью было «просто» удалить все коммиты старше, чем, скажем, две недели, или оставить только пять коммитов в истории (это, вероятно, лучше:)) Я много гуглил и много читал из Git Community Book, и думаю, мне нужно будет работать с git-rebase
или git-filter-branch
.Дело в том, что я просто не могу заставить его работать.
Просто для иллюстрации;У меня есть история H только с одной ветвью (Основная ветвь)
A -> B -> C -> D -> E
IЯ хочу удалить некоторые предыдущие коммиты, чтобы моя история выглядела как
C -> D -> E
Коммиты A и B должны быть полностью очищены.Я пробовал git-rebase
, но кажется, что слияние коммитов вместе, а не удаление старых, может быть, я не до конца понимаю, как работает rebase ... Еще одна мысль, которая у меня была - удалить все из .git / objects и затем создатьНовый коммит, использующий git-hash-object -w
, git-mktree
и git-commit-tree
, мне пока не удалось отправить это «искусственное» дерево на сервер.
Я не буду работать ни с какими ветвями, поэтому естьнет необходимости принимать это во внимание.
Интересно, может ли кто-нибудь дать мне конкретное употребление git-rebase
, если это то, что я должен использовать?Или некоторые другие советы, примеры того, что я могу сделать.
Ура!
Редактировать:
Большие файлы не всегда будут одинаковыми большими файлами, а некоторые файлы будут заменены новыми.Я хочу, чтобы эти замененные файлы были полностью удалены из истории.