Git фатальная ошибка: невозможно вытащить код на мой сервер - PullRequest
1 голос
/ 24 апреля 2020

У меня есть Django веб-приложение, работающее на сервере WebFaction Linux. Вплоть до двух дней go я мог использовать git, как и ожидал: изменять файлы локально, а затем извлекать код на сервере.

Однако сегодня это произошло, когда я пытался вытянуть мою сервер:

remote: Enumerating objects: 69, done.
remote: Counting objects: 100% (69/69), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 50 (delta 38), reused 41 (delta 29), pack-reused 0
Unpacking objects: 100% (50/50), 6.68 KiB | 684.00 KiB/s, done.
fatal: unresolved deltas left after unpacking
fatal: unpack-objects failed

Git status приводит к событию:

On branch master
Your branch is up to date with 'origin/master'.

, хотя у меня есть изменения, которые были зарегистрированы Git (я также вижу свои изменения на GitHub поскольку я также могу нормально работать с git в своем собственном P C).

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

Есть мысли?

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

Это сообщение об ошибке означает, что ваш репозиторий или удаленный репозиторий каким-либо образом поврежден.

Когда Git выполняет выборку, он согласовывает, какие объекты у него уже есть, с удаленным сервером. Затем удаленный сервер отправляет пакет, содержащий дельты (то есть наборы изменений), против других объектов в пакете или против объектов, которые вы должны иметь в собственной системе. Этот последний случай, когда пачка ссылается на объекты, находящиеся вне ее, называется thin pack ; обычно пакеты должны быть complete и содержать дельты против только тех объектов, которые они содержат.

В этом случае ваша версия Git пытается преобразовать эти дельты в целые объекты, и есть некоторые это не может решить. Это может означать, что в вашем хранилище отсутствуют объекты, которые оно должно иметь, или это может означать, что удаленная сторона отправляет поврежденные данные, возможно, потому, что в нем также отсутствуют объекты (или может просто быть ошибка).

Вещи сделать это - попробовать git fsck в вашем репозитории и посмотреть, говорит ли он о каких-либо пропущенных объектах. Если речь идет об отсутствующих объектах, вы можете попытаться сделать еще один клон с сервера и скопировать его. В Git Руководстве пользователя подробно описывается, как это сделать, поэтому это должно быть относительно легко сделать.

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

Если вы хотите использовать ленивый подход, вы можете просто клонировать заново, а затем запустить git fsck, и если он пройдет, вы хороши для go.

0 голосов
/ 27 апреля 2020

Мой локальный репозиторий неглубокий, и я добавил новую ветку в удаленный. Затем я получил ту же ошибку при вызове git fetch origin.

. Я решил проблему, указав глубину: git fetch --depth=10 origin После этого вызова git fetch origin не будет отображаться никакой ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...