Попробуйте еще раз, на этот раз используя newren/git-filter-repo
, который заменит BFG и ветвь фильтра git
Как упомянуто в документации:
[есть] дополнительные шаги, чтобы удалить другие теги и сделать другой gc, все еще требуются, чтобы очистить старые объекты и избежать смешивания новой и старой истории, прежде чем нажать куда-нибудь
git filter-repo
избегает путаницы с пользователями (и предотвращает случайное повторное нажатие старого материала) из-за смешивания старого и переписанного репо.
Примечание: на стороне сервер (т.е. , где вы нажимаете), необходимо запустить git gc, что выполняется регулярно, но не сразу.
Это случай для GitHub , а также для BitBucket.
См. Документацию Atlassian " Как выполнить сборку мусора вручную в хранилище "
Bitbucket реализует свою собственную логику сбора мусора, не полагаясь больше на git gc
(это достигаетсянастройка [gc] авто= 0 во всех репозиториях).
При создании форка pruneexpire = никогда не добавляется в конфигурацию git и удаляется при удалении последнего форка.
As упомянутое здесь :
BitBucket запустит git gc
самостоятельно в ответ на выполнение git reset --hard HEAD~1
(который отбрасывает последний коммит), за которым следует git push -f
.
Итак, в вашем случае:
git commit --allow-empty -m "empty commit"
git push
git reflog expire --expire-unreachable="30m" --all
git prune --expire="30m" -v
git gc --prune="30m"
git reset --hard HEAD~1
git push -f
И git gc
должно быть сделано на стороне BitBucket!