git: файл в истории без коммитов на нем, как это объяснить?
Я перенес много репозиториев SVN во многие другие репозитории git. Эти репозитории SVN имеют более 113000 коммитов. Я получаю очень большие git-репозитории, и мне нравится их уменьшать.
Я использовал скрипт, чтобы узнать самые большие объекты. Эти объекты больше не находятся ни в каких ветвях, и я хотел знать, к какому коммиту они относятся. Я не мог найти ни одного???
Я использовал команду
git log --pretty=oneline --branches -- my_big_file_full_path
Но ничего не было возвращено. Может кто-нибудь объяснить мне, почему этот файл не имеет связанных коммитов? Если это действительно так, как удалить все файлы, которые не связаны ни с какими коммитами?
PS: процесс миграции довольно тяжелый, и я использую bfg (это фантастика), чтобы удалить некоторые известные неиспользуемые папки.
2 ответа
Я наконец нашел ответ в другом вопросе stackru, какой коммит имеет этот BLOB-объект? использование сценария оболочки позволило мне найти коммит, который изменил большой файл.
Вы чистили репозиторий после использования BFG? Как указано в разделе "Использование" на сайте BFG, вы должны использовать
$ cd some-big-repo.git
$ git reflog expire --expire=now --all
$ git gc --prune=now --aggressive
избавиться от объектов в репозиториях, которые не являются частью какого-либо коммита.