Уменьшение размера репозитория git в результате удаления файлов

#git

#git

Вопрос:

За время существования моего репозитория git в него было добавлено множество двоичных файлов мультимедиа. Теперь эти медиафайлы были удалены.

Однако я подозреваю, что репозиторий хранит информацию об этих медиафайлах в архиве репозитория, поскольку размер моего репозитория составляет 400 МБ.

Я читал о командах очистки, таких как git-gc --aggressive но я не думаю, что это позволяет мне напрямую «забыть» эти старые медиафайлы.

P.S. — в то время эти медиафайлы фактически были частью репозитория SVN, и с тех пор я использовал git-svn для преобразования репозитория в git.

Комментарии:

1. git clone --depth X допускает мелкое клонирование, но это не останавливает тот факт, что основное репозиторий по-прежнему содержит историю для всех этих больших файлов.

Ответ №1:

Если они являются частью истории какой-либо из ваших ветвей, то git необходимо сохранить содержимое этих файлов, иначе у вас была бы неполная история.

Единственный способ полностью удалить их — это переписать историю этих ветвей и удалять их из коммитов, где они были добавлены, и далее, пока они не были удалены.

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

Если вы решили переписать историю своего репозитория, вам, вероятно, нужно посмотреть на что-то вроде git filter-branch с помощью --index-filter или --tree-filter .

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

Комментарии:

1. После прочтения git filter-branch документации, я думаю, мне нужно будет задать еще один вопрос о том, как на самом деле ее использовать 🙂