По какой-то причине, что объект поврежден в вашем происхождении пульта дистанционного управления.
Вам нужен еще один клон этого репозитория, где вы можете запустить
git cat-file -t 2a0836034919f0cfe0f8f1ab98037884dd1c93de
без ошибок, и вы хотите, чтобы придать хорошую версию этого объекта в базу данных объекта происхождения в.
Описание проблемы может быть сложным, потому что мы говорим о множественных клонов, которые могут находиться на разных хостах и, возможно, принадлежат различным пользователям. Приведенные ниже шаги предполагают, что у вас есть доступ к оболочке вашего хоста как пользователь, которому принадлежит ваш исходный репозиторий. В приведенном ниже подсказке origin$
показаны команды, которые должны быть запущены на машине, на которой размещено ваше происхождение.
Плохой объект по происхождению находится в свободном формате, поэтому последний шаг восстановления - простая копия.
Предполагая, что объект в хорошем клоном также свободно, а затем запустить
origin$ cp /path/to/good-repo/.git/objects/\
2a/0836034919f0cfe0f8f1ab98037884dd1c93de \
/path/to/origin/objects/2a
если ваше происхождение голое хранилище или
origin$ cp /path/to/good-repo/.git/objects/\
2a/0836034919f0cfe0f8f1ab98037884dd1c93de \
/path/to/origin/.git/objects/2a
иначе.
Если в хорошем клоне этот объект хранится в упаковке, то вам нужно его вытащить. Я рекомендую сделать это в клочья сбрасывания царапин.
origin$ git clone file:///path/to/good-repo /tmp/restore-repo
Если good-repo
находится на другой машине, клон URL будет отличаться.
origin$ git clone [email protected]:src/foo/.git /tmp/restore-repo
Перейдите в каталог, в котором хранится ваш временный репозиторий.
origin$ cd /tmp/restore-repo
Переместить файлы пакета из базы данных объекта, потому что мерзавец не будет распаковать объекты, если он думает, что он уже имеет их.
origin$ mkdir /tmp/restore-packs
origin$ mv .git/objects/pack/* /tmp/restore-packs
Теперь вы готовы распаковать.
origin$ for pack in /tmp/restore-packs/*.pack; do
git unpack-objects -r < $pack
done
Опция -r
говорит git-unpack-objects
продолжать распаковку, даже если он сталкивается с плохим объектом.
На данный момент /tmp/restore-repo
теперь должен содержать 2a08360 ... как свободный объект, поэтому запустить
origin$ cp /tmp/restore-repo/.git/objects\
2a/0836034919f0cfe0f8f1ab98037884dd1c93de \
/path/to/origin/objects/2a
или
origin$ cp /tmp/restore-repo/.git/objects\
2a/0836034919f0cfe0f8f1ab98037884dd1c93de \
/path/to/origin/.git/objects/2a
в зависимости от того, происхождение голый репозиторий.
его не работает человек. я получаю ту же ошибку :( –