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