LINUX.ORG.RU

Уменьшие размера git

 


1

2

Привет. У меня есть git репозиторий без админ доступа. В нём по историческим причинам долгое время наряду с исходным кодом хранились и большие файлы размером 1 Gb. Я избавился от них, перенеся в другое место. Однако, clone репозитория по-прежнему большой, > 1Gb. Какие есть способы уменьшить...

- уже имеющуюся копию репозитория без пере-клонирования
- копию репозитория, которую клонируют с нуля

Ответ на: комментарий от EXL

мне не нужно удалять объект из истории коммитов, он должен остаться в старых версиях. Мне бы помогло что-то типа GIT-LFS, однако этого файла уже нет в master, следовательно и трекать нечего.

former_anonymous ★★★
() автор топика

Чтобы уменьшился основной репозиторий, большие файлы нужно вычистить из всей истории filter-branch’ем. Нужно учитывать что все хэши коммитов поменяются и это будет, по сути, новый репозиторий. А размер клона можно уменьшить указав небольшой –depth.

slovazap ★★★★★
()
Ответ на: комментарий от former_anonymous

не не нужно удалять объект из истории коммитов, он должен остаться в старых версиях

Посмотри в сторону git gc --aggressive --prune=now для существующей копии репозитория, но файла в истории там уже не должно быть.

А для копии репозитория с нуля используй --depth, хотя это не панацея, насколько я помню. Ибо сервер может сжать все файлы в несколько громадных pack-файлов и при clone даже с depth может выкачивать какой-нибудь громадный pack-файл, в котором есть часть твоего огромного ненужного файла из прошлой истории.

EXL ★★★★★
()

Вот по этой причине некоторые юзают svn где можно клонить часть дерева. Так что либо не устраивай помойку в репе, либо юзай svn.

iron ★★★★★
()
Ответ на: комментарий от EXL

а-ля битторрент... но в его случае чанки как раз маленькие. может у гита есть соотв. ключик и тогда проблема решится.

mos ★★☆☆☆
()

- копию репозитория, которую клонируют с нуля

git clone --depth=1 ...

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

anonymous
()

git clone --depth=1 если админа нет, а так можно хоть через rebase удалить блобы

st4l1k ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.