2

Я сделал огромную ошибку.

Я сделал репо с некоторыми файлами. Я сделал несколько коммитов, все работало правильно. Но потом я понял, что в двух файлах была очень большая ошибка, из-за которой их размер составлял около 200 МБ, тогда как они должны быть около 2 МБ (без шуток). Они находятся на корне коммит. Мне удалось изменить корневой коммит правильными файлами, но мой репо по-прежнему составляет около 500 Мб, что делает его очень сложным в управлении. Если я сбрасываю к корневому коммиту, эти файлы - правильные файлы.

Из-за этого я еще не продвигался к центральному репо. Это займет вечность, чтобы загрузить 500 МБ.

Итак, мне было интересно, как я могу удалить эти 200-мегабайтные файлы из репозитория, даже если их больше нет в коммите. Какие команды мне следует использовать? Должен ли я просто удалить самые большие файлы BLOB-объектов? Я сумасшедший? Я сделал что-то действительно неправильно?

Благодарю. Я действительно тороплюсь.

[ОБНОВИТЬ]

Я уже запустил git gc, но он только уменьшил его примерно до 40 Мб. Я думаю, что эти грязные файлы все еще там, поэтому я не уверен, что делать.

2 ответа2

2

Чтобы удалить файлы из истории репо, вы можете использовать git filter-branch. Однако это просто удаляет файлы из всех деревьев, но содержимое файла может все еще храниться в каплях внутри кеша объектов git. Вы можете очистить их, используя git gc.

Однако вам не нужно беспокоиться о том, что эти неприкрепленные BLOB-объекты будут перенесены в главное хранилище, поскольку только BLOB-объекты, прикрепленные к дереву фиксации, которое вы отправляете, отправляются на другой сервер.

Если вы уже загрузили большие файлы, то очистка удаленных больших двоичных объектов в удаленном репо сложнее. См. Https://stackoverflow.com/questions/3162786/how-to-do-git-gc-on-git-remote-repository

0

Самый простой способ уменьшить объем локального репо (не обязательно для проталкивания, как правильно сказал Майкл Андерсон) - это перейти в другой каталог и запустить git clone /path/to/your/repo . Этот новый репо должен быть небольшим - продолжайте свою работу там.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .