Ответ 1
В целом исправление поврежденных объектов может быть довольно сложным. Однако в этом случае мы уверены, что проблема заключается в прерванной передаче, что означает, что объект находится в удаленном репозитории, поэтому мы должны быть в состоянии безопасно удалить нашу копию и позволить git получить ее с удаленного, правильно на этот раз.
Временной файл объекта с нулевым размером, очевидно, может быть просто удален. Это не принесет нам никакой пользы. Коррумпированный объект, который ссылается на него, d4a0e75...
, является нашей реальной проблемой. Его можно найти в .git/objects/d4/a0e75...
. Как я сказал выше, это будет безопасно удалять, но на всякий случай, сначала сделайте резервную копию.
В этот момент новый git pull
должен преуспеть.
... предполагая, что это будет успешным в первую очередь. В этом случае кажется, что некоторые локальные модификации препятствовали попытке слияния, поэтому были stash
, pull
, stash pop
. Это может произойти с любым слиянием, хотя и не имело никакого отношения к поврежденному объекту. (Если не было необходимости в какой-либо очистке индекса, и этот приток сделал это в процессе... но я не верю в это.)