Очистка старых коммитов с помощью TortoiseGit - PullRequest
0 голосов
/ 18 декабря 2018

Мой репозиторий имеет размер 1 ГБ в соответствии с BitBucket.

У меня есть коммиты вплоть до начала 2017 года.

Как мне обрезать свою историю?Например, у меня есть определенный тег XXX, и я хотел бы удалить все коммиты из XXX обратно в начальный коммит.Так что хранилище меньше.

Я попробовал это на своем ПК:

ajtru@DESKTOP-4OHL3UQ MINGW64 /d/My Programs/2017/MeetSchedAssist (master)
$ git count-objects -vH
count: 0
size: 0 bytes
in-pack: 13336
packs: 1
size-pack: 575.46 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes

Так что я не понимаю, почему онлайн-хранилище битовых корзин превышает 1 ГБ.

@ MrTux Возможно, у вас все еще есть много удаленных веток в BitBucket, Git не выбрасывает коммит, если на них ссылаются из ветви / тега

У меня есть только одинфилиал на удаленном сервере, но у меня есть много тегов :

Tags

1 Ответ

0 голосов
/ 20 декабря 2018

Без переписывания истории (например, перебазировки) вы не можете удалить / изменить историю.Git by design использует цепочку всех коммитов.Таким образом, изменение старого коммита приведет к изменению полной истории и всех последующих SHA1 (идентификаторов коммитов).Возможно, у вас все еще есть много удаленных веток в BitBucket (которые не включены в вашу основную ветку master), Git не выбрасывает коммит, если на них ссылаются из ветки / тега.- По этой причине важно, чтобы вы принудительно выдвинули все ветви и (или удалили все незастроенные) теги после перебазирования или изменения истории - в противном случае они по-прежнему указывают на старую историю (которую нельзя удалить, поскольку некоторые теги / ветви указывают на нее).

Большие репозитории часто возникают из-за того, что коммиты содержат двоичные файлы.если они могут быть сгенерированы с использованием источника, они не должны быть включены в коммиты.- Если вы хотите опубликовать их, некоторые платформы предоставляют возможность прикреплять файлы к тегам (часто называемые релизами).

...