Я пытался уменьшить размер своего репозитория Git, переместив некоторые файлы в git LFS. Еще несколько 100 команд, и вот мы с файлами в git LFS и больше нет истории этих файлов в моих коммитах git.
Однако всякий раз, когда я клонирую репозиторий, я все еще загружаю около 3 ГБ объектов. Я обошел эту проблему, создав новый репозиторий в Visual Studio Team Services, и после локальной обрезки и сбора мусора в моем репозитории, а затем отправки туда, он был уменьшен до 300 МБ. (Команда для этого находится локально в этом сообщении: Git: что такое висячий коммит/блоб и откуда они берутся?)
Однако я не могу себе представить, что вам всегда нужно удалять / воссоздавать полный репозиторий, чтобы удалить оборванные коммиты.
Я также пытался выполнить git init, а затем применить его к существующему репозиторию, но это только увеличило количество объектов.
Для тех, кто также сталкивается с подобными проблемами, это была команда, которую я выполнил, чтобы создать новый репозиторий без оборванных коммитов, однако я хотел бы узнать, как это сделать в существующем репозитории, не удаляя его:
git clone https://avavedse.visualstudio.com/Test/_git/TestRepository
cd blahblah
git reflog expire --expire=now --all
git gc --prune=now
git remote add newrepo https://avavedse.visualstudio.com/Test/_git/TestRepositoryNewEdition
git push newrepo
git gc
, вы можете очистить его, а не заменить, но обычно я на это не рассчитываю. - person Mark Adelsberger   schedule 24.05.2017gc
— а я полагаю, что VSTS — нет, вам необходимо заменить репо. Период. - person Mark Adelsberger   schedule 24.05.2017