Git push не удалось - распаковка-объекты ненормальный выход - PullRequest
32 голосов
/ 09 декабря 2011

Я использую удаленный репозиторий git. Я успешно фиксирую свои файлы и сейчас пытаюсь подтолкнуть его к потоку.

Операция завершается с этим сообщением:

git.exe push --progress  "origin" master:master

error: unpack failed: unpack-objects abnormal exit
error: RPC failed; result=18, HTTP code = 200

Я использую клиент TortoiseGit в Windows 7.

Почему я получаю это сообщение? как излечиться от этого состояния?

Ответы [ 12 ]

35 голосов
/ 08 августа 2012

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

Например, я размещаю свою собственную систему Gitosis на сервере Ubuntu.Когда я создаю git-репо на сервере, я запускаю sudo git init --bare <repo name>, затем мне нужно запустить sudo chgrp -R gitosis <repo name> && sudo chown -R gitosis <repo name>.

21 голосов
/ 09 декабря 2011

Согласно эта статья git repack remote/origin/master может помочь в случае повреждения вашего локального хранилища. Чтобы проверить, можете ли вы попытаться клонировать ваше удаленное хранилище в новый каталог и проверить push из него.

8 голосов
/ 01 июня 2014

Это также происходит, когда на пульте дистанционного управления не осталось свободного места, попробуйте освободить место.

1 голос
/ 13 декабря 2015

Я столкнулся с этой проблемой, когда я установил новый удаленный сервер и создал удаленное git-репо / папки с моим пользователем root (а не с моим личным действием пользователя). Проблема устранена путем удаления репозиториев git и повторного их использования с моей личной учетной записью. теперь все работает как положено.

1 голос
/ 29 апреля 2015

Проверьте права доступа к удаленному / исходному хранилищу.Они доступны для записи пользователю git?Если нет, вы получите эту ошибку.Что-то вроде:

chown git_user.git_user -R /path/to/repo/your_funky_repo

должно сработать в * nix системах.Если ваш пульт находится на Windows, я уверен, что вы можете запустить нечто подобное.

0 голосов
/ 27 сентября 2018

В моем случае удаленный репо был мелким клоном.Я выдвигал коммит слияния, который, очевидно, использовал коммиты, датированные до самого раннего коммита, который имел мелкий репо.

Чтобы исправить это, вам необходимо отключить пульт: git fetch --unshallow

0 голосов
/ 09 августа 2018

Я успешно нажал "git push —no-thin origin HEAD"

Иногда, когда мы выполняем git push для отправки новой ветви в удаленный репозиторий, он будет заблокирован удаленным репозиторием.

Возможно, у нас нет соответствующих разрешений . Однако, когда я добавляю параметр --no-thin в git push, я могу увеличить его.

Однако на эту команду могут влиять разные уровни разрешений, поэтому нет гарантии, что она будет выдвинута. Но мне это удалось.

0 голосов
/ 01 марта 2017

Если вы используете URL-адрес HTTP, вы не можете передавать данные через HTTP.HTTP предназначен только для чтения.Вместо этого используйте ssh.

Do git remote -v, чтобы проверить, является ли URL вашего репозитория HTTP.Вы можете изменить этот URL, выполнив это git remote set-url origin ssh:user@server/dir/project.git

После этого вы можете нажать!

0 голосов
/ 07 февраля 2017

На моем (gitlab) сервере мне сначала нужно было набрать -R git: git repositories /, но git repack не работал. Проблема была решена, когда я использовал scp для копирования объектного файла из локального репозитория на сервер:

    scp .git/objects/0d/449dd91d8c20c1820d1284371b28637e08a0f3 root@server:/home/git/repositories/my/project.git/objects/0d/
0 голосов
/ 07 июля 2015

В Windows единственное исправление, которое работало для меня, заключалось в удалении следующих строк из моего файла .gitconfig:

[credential]
helper = !'C:\\Users\\YourNameHere\\AppData\\Roaming\\GitCredStore\\git-credential-winstore.exe'

Как только я это сделал, я вручную (успешно) нажал один раз, затем добавил вышеупомянутые строки обратно в .gitconfig, и все заработало.

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