Ответ 1
Похоже, вы уже делили репозиторий с рядом других пользователей. Если это так, то вы, вероятно, должны просто жить с ним.
Если вы контролируете все клоны, вы можете переписать историю поверх модифицированного корневого коммита с удаленными файлами. Обратите внимание, что вы не должны этого делать, если другие разработчики уже работают с этой веткой.
Если вы переписываете историю, вы можете попробовать следующее. Обратите внимание, что поскольку git хранит журналы, в которых недавно было зафиксировано ваше сообщение HEAD (reflogs), крупные объекты не будут немедленно исчезать из вашего репозитория или других репозиториев, которые уже имеют их, даже если вы пытаетесь выполнить git gc
или git gc --prune
. Тем не менее, он гарантирует, что любые новые клоны не получат выборку больших объектов как часть истории ведущей ветки.
Предполагая, что ваш рабочий каталог "чистый":
# Go back the initial commit
git checkout <SHA1_of_old_root>
# Clean up the index to remove unwanted files, e.g. using git rm <files>
# ...
# Amend the initial commit with the new tree. Note the sha1 of the new commit
git commit --amend
# Go back to the master branch
git checkout master
# Re-apply all the commits onto the new root
git rebase --onto <SHA1_of_new_root> <SHA1_of_old_root>