Git push не удается github: не удалось прочитать объект - PullRequest
17 голосов
/ 21 сентября 2011

История:

Я занимаюсь разработкой RoR-приложения как для настольного компьютера, так и для ноутбука.Было очень удобно фиксировать изменения, сделанные на другом, помещать их в github и получать и объединять в других.

Отправной точкой является следующее: я зафиксировал последние изменения на своем рабочем столе, перенес их в github, а затем извлек ислил их в мой ноутбук.Затем я сделал несколько коммитов на ноутбуке и отправил на github.Взяли изменения, слились с моим рабочим столом (с --no-ff).Затем произошел вероятный источник всех неприятностей: я вернул рабочий стол, чтобы зафиксировать, где он был до последней загрузки и слияния.Сделал с ним какую-то разработку, увлекся, подтолкнул на github.В ноутбуке я также сделал возврат, хотя я превратил его в коммит, который был сделан где-то между последней выборкой из github, извлечен снова и слил их.Некоторые сообщения об ошибках приходили после того, как вернулись оба компьютера и ноутбука, но все работало довольно хорошо, и я продолжал работать на обеих машинах.

До сих пор.Я попытался перейти с моего ноутбука на github, который дает следующий вывод:

 Counting objects: 106, done.
 error: unable to find 5a2a4ac...
 error: unable to find bc36923...
 error: unable to find ecb0d86... 
 error: unable to find f76d194...
 error: unable to find f899df7...
 Compressing objects: 100% (64/64), done.
 fatal: failed to read object 5a2a4ac... : Invalid argument
 error: failed to push some refs to 'git@github:username/repo.git'

Итак, вопрос в том, что именно здесь произошло?

РЕДАКТИРОВАТЬ: Кажется, что из-заПриостановив мой ноутбук и переместив его с места на место в таком состоянии, как-то облажался жесткий диск.Вывод fsck недоступен, потому что мы работали над этой проблемой и продолжали работать, но в IIRC зависали некоторые ветви и коммиты, включая тот коммит, который git не смог прочитать.- Теему

Ответы [ 2 ]

5 голосов
/ 01 ноября 2011

Я столкнулся с такими проблемами.

Вместо того, чтобы тратить часы на решение и устранение этих проблем, мое «решение» обычно заключается в том, чтобы взять нужный мне код, скопировать его в новый каталог, удалить файлы .git, а затем создать для него новый github, а затем соедините их как обычно.

Хотя это может и не быть конкретным ответом на детали, которые вы поднимаете, я обнаружил, что может быть несколько причин возникновения проблем с git / github, и вместо того, чтобы желать, чтобы я был «экспертом по git» сейчас (это происходит, но это занимает много времени), я делаю все выше и продолжаю разработку приложений.

1 голос
/ 08 ноября 2011

Ваша проблема в том, что вы пытаетесь читать объекты, которые не являются частью вашего «дерева». Они существуют, но они осиротели. Однако git позволяет вам объединять один проект с другим, так что это один из способов сохранить ваши коммиты без повторного запуска, что-то вроде следующего:

  1. git remote add -f somename git: //somegitplace.com/user/some.git

  2. git merge -s ours --no-commit somename / master

  3. git read-tree --prefix = ext / somename -u somename / master

  4. git commit -m 'external merge'

  5. git pull -s поддерево имя мастера master

Надеюсь, это поможет. Дайте мне знать, если нет, и мы можем атаковать его снова

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