Как обновить/уменьшить размер моего рефинга github после запуска BFG Repo Cleaner
Я очистил свое репо с помощью BFG Repo Cleaner, используя следующую процедуру:
$ git clone --mirror git://example.com/some-big-repo.git
$ java -jar bfg.jar --strip-biggest-blobs 500 some-big-repo.git
$ cd some-big-repo.git
$ git reflog expire --expire=now --all
$ git gc --prune=now --aggressive
$ git push
Я вижу, что мое местное репо сократилось на 1 ГБ. Отлично. Проблема, с которой я столкнулась сейчас, и что я не смог найти информацию о том, что теперь я хотел бы также уменьшить размер GitHub-repo. Как достичь этого?
git push
не работал, и я также попробовал git push origin --force --all
, который дал мне это сообщение об ошибке: error: --all and --mirror are incompatible
Ответы
Ответ 1
Мой совет: не беспокойтесь о том, что GitHub сообщает как размер репо. По разным причинам он не будет точно отражать "истинный" размер репо.
Что вы действительно волнуете, так это ответ на этот вопрос:
Насколько велика эта репо на моем диске, если я делаю новый клон из GitHub?
Объем данных, которые вы должны загрузить, чтобы сделать новый клон вашего репо и объем пространства, который он занимает на вашем диске, - это то, что вам действительно нужно (и почти одинаковые количества). Попробуйте сделать новый клон и посмотрите, сколько данных передано и сколько места он занимает на вашем диске. Он должен соответствовать размеру вашего усохшего репо.
Число, указанное в консоли GitHub (например, https://github.com/settings/repositories или в API GitHub) для вас не очень важно, которому повезло, потому что он пользуется освобожденными и несколько пьяными отношениями с более важной фигурой выше, из-за использования Git Alternates и git gc
, происходящих только периодически на серверах GitHub.
Боковое примечание: Bitbucket также может принять время для обновления указанного размера репо.
Просто потому, что вы запустили git gc
локально в своем репо, не означает, что GitHub запустил его на своей копии вашего репо, и поэтому их копия вашего репо будет казаться намного больше на некоторое время, хотя, когда вы клонируете ее, отправляется только "важная" информация, и вы получаете меньшее репо, которое вы желаете.
Полное раскрытие: я являюсь автором BFG Repo-Cleaner.
Ответ 2
Нажимайте без флага --all
, то есть do
git push origin --force
и это должно позаботиться об этом.
EDIT: Импровизация при обсуждении в комментариях
- Вы можете создать новое репо на github,
-
нажмите на него
cd repo_directory
git remote add new_origin url/to/new/repo
git push new_origin --mirror
- если все получится (ошибок нет)
- переименуйте репозиции github (оригинал в фиктивное имя и новый для оригинала)
-
Удалите удаленный new_origin
. Поскольку URL-адрес репозитория github должен быть таким же, как только вы переименовали материал, исходная запись для [origin]
в .git/config
должна быть хорошей, и вам нужно только удалить новый удаленный файл.
git remote rm new_origin
Ответ 3
Если это возможно:
- переименуйте текущий репозиторий GitHub
- создать новый с тем же именем
- снова нажмите на ваш пустой репозиторий GitHub (
git push --mirror
)
- проверьте, сохраняется ли предупреждение размера в новом GitHub rpeo