2013-06-06 2 views
26

Как я могу распаковать все объекты файла пакета?Как распаковать все объекты репозитория git?

Я только что клонировал удаленный репозиторий, поэтому в моем локальном репозитории в настоящее время нет никакого свободного объекта, только файлы .pack и .idx.

Я пробовал работать git unpack-objects < .git/objects/pack/pack-.pack, но ничего не происходит.

Я делаю что-то неправильно? Есть ли другая команда для этого?

ответ

32

Перед использованием команды необходимо перенести объекты пакета за пределы каталога .git/objects/pack. Однако файлы пакета должны находиться внутри репозитория.

Например, создайте имя каталога SAMPLE в корне вашего проекта. Затем переместите файлы пакета в каталог SAMPLE. После этого внутри репозитория без файлов пакета используйте команду git unpack-objects < SAMPLE/*.pack. Git будет генерировать все объекты внутри каталога .git/objects вашего репозитория.

+9

Хакки, но действительны. Причина этого в том, что 'git unpack-objects' не будет создавать объекты, уже находящиеся в репо, и, увидев, что пакетный файл находится в репо, он ничего не делает. Это очень ясно объясняется в 'get help unpack-objects'. –

+4

спасибо, всего лишь одно: файлы пакета не обязательно должны находиться внутри репо. –

+0

Я бы также добавил, что есть файл '.git/objects/info/packs', который, как представляется, перечисляет файлы пакетов, доступные под' .git/объекты/packs'. Существует также файл '.git/упакованный-refs', который содержит список ссылок (заголовков, тегов), доступных через файлы пакетов. Я не уверен, что делать с ними после удаления файлов пакетов - возможно, их нужно удалить, может быть, 'git fsck' позаботится о них - я не знаю. Просто что-то, чтобы иметь в виду на всякий случай ... – kostix

Смежные вопросы