Error remote unpack failed unable to create temporary object directory

While attempting to push to a remote repository I am receiving the following error Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 40 threads. Compre...

While attempting to push to a remote repository I am receiving the following error

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 40 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 368 bytes | 368.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
error: remote unpack failed: unable to create temporary object directory
To gitlab:product-line-family/testRepo.git
 ! [remote rejected] devel -> devel (unpacker error)
error: failed to push some refs to 'git@gitlab:product-line-family/testRepo.git'

I have looked through answers to this similar question however it does not seem to be a permissions or storage issue as is suggested in the other answers. The error is persistent across multiple users and workstations and each has full permissions to the local repository.

If anyone has any ideas what may be causing this and how to fix it I would greatly appreciate the advice!

asked Oct 21, 2020 at 14:17

krobinson's user avatar

0

Somewhat same problem. Solved it (for me). A tricky one.

My client is a MacOS. I have it running under user ‘president’.
My git-server runs on a Synology NAS. There I am majorly running everything also under a user called ‘president’. In fact these are not the same users since they exist on different physical setups.
And by the way I setup the git-server with a user named ‘gituser’. Since the ‘president’ is a very mighty user there is no problem to access everything with ‘president’ which can be accessed by ‘gituser’.

And now, since I am remotely accessing with a local user with the same name that the server somewhat knows this is why I worked.

In other words this worked after password is asked and entered:

CLIENT/president> git clone ssh://myserver:22/git/myrepo

The login happens with (the wrong) ‘president’ and (some) git functionality will work flawless.
The better way is using the proper git-user ‘gituser’ which is allocated on the server:

CLIENT/president> git clone ssh://gituser@myserver:22/git/myrepo

That does the trick for me. So no corrections need to be done on the server side.

Further reading on setting up git on a Synology: https://gist.github.com/walkerjeffd/374750c366605cd5123d

answered Oct 30, 2020 at 20:00

Dirk Schumacher's user avatar

1. Описание проблемы

Сразу после нажатия кода определенного модуля, отправки кода в локальную ветвь, а затем отправки в удаленную ветвь появилась следующая ошибка, побудившая меня отказаться от Push. Тогда нет других советов.

Используя терминал git bash, введите команду git push, и она также предложит отклонить ее, как показано ниже:

[email protected] MINGW32 /d/GitLab Source/XTCWatch_TalentAccount/XTCWatch (feature/TalentAccountWatchChangeAssistant)
$ git push
Counting objects: 59, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (51/51), done.
Writing objects: 100% (59/59), 7.13 KiB | 0 bytes/s, done.
Total 59 (delta 43), reused 0 (delta 0)
error: unpack failed: unable to create temporary object directory
To 172.28.xxx.xxx:Android/PhoneApp/XTCWatch.git
 ! [remote rejected]       feature/TalentAccountWatchChangeAssistant -> feature/TalentAccountWatchChangeAssistant (unpacker error)
error: failed to push some refs to '[email protected]:Android/PhoneApp/XTCWatch.git'

Во-вторых, решить проблему

1. Просмотр разрешений .git

Советы:unable to create temporary object directory

Невозможно создать временный каталог, похоже, это проблема с правами доступа, предположительно проблема с правами на запись в папку .git.

Я пошел, чтобы проверить разрешения протокола на удаленном сервере следующим образом:

root@ubuntu4146:/data/gitlabData/repositories/Android/PhoneApp# ll
total 32
drwxrwx--- 8 git git 4096 10месяц 31  2017 ./
drwxrwx--- 9 git git 4096  6месяц  7 15:00 ../
drwxrwx--- 6 git git 4096 11месяц 15  2017 Document.git/
drwxrwx--- 6 git git 4096 10месяц 31  2017 Document.wiki.git/
drwxr-xr-x 6 git git 4096  8месяц  3 16:47 XTCWatch.git/
drwxrwx--- 6 git git 4096 12месяц  6  2017 XTCWatchI18N.git/
drwxrwx--- 6 git git 4096  8месяц 14  2017 XTCWatchI18N.wiki.git/
drwxrwx--- 6 git git 4096  8месяц 14  2017 XTCWatch.wiki.git/
root@ubuntu4146:/data/gitlabData/repositories/Android/PhoneApp# 

Обнаружил, что разрешения XTCWatch.git сталиdrwxr-xr-x 6 git git 4096 3 августа 16:47 XTCWatch.git /

10 символов, представляющих разрешения, используются для определения того, что разные пользователи могут делать с файлом

  • Первый символ представляет файл (-), каталог (d), ссылку (l)

Остальные символы находятся в группах по три (rwx), чтение (r), запись (w), выполнение (x)

  • Первая группа rw-: права владельца файла доступны для чтения и записи, но не могут быть выполнены

  • Вторая группа r-x: права чтения и выполнения, но не могут быть записаны

  • Третья группа r-x: права на чтение и выполнение, но не могут быть записаны

Его также можно выразить в виде чисел: r = 4, w = 2, x = 1, поэтому rwx = 4 + 2 + 1 = 7

Поэтому наш толчок потерпит неудачу, потому что у нас нет разрешения на запись.

2. Проверьте причины, почему вы не можете написать

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

[email protected]:/data/gitlabData/repositories/Android/PhoneApp# df -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        28G   14G   13G  52% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.8M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G  4.0K   32G   1% /run/shm
none            100M     0  100M   0% /run/user
/dev/sda5       238G   60M  226G   1% /home
/dev/sdb        1.8T  1.8T     0 100% /data
You have new mail in /var/mail/root
[email protected]:/data/gitlabData/repositories/Android/PhoneApp# 

Как показано на рисунке выше: Диск каталога / data заполнен, а хранилище gitlab помещено в каталог / data. Поэтому писать невозможно.

Хорошо, я уберу ненужные данные и удостоверился, что диск доступен. Оставшееся место на диске после очистки выглядит следующим образом:

root@ubuntu4146:/data/gitlabData/repositories/Android/PhoneApp# df -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        28G   14G   13G  52% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.8M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G  4.0K   32G   1% /run/shm
none            100M     0  100M   0% /run/user
/dev/sda5       238G   60M  226G   1% /home
/dev/sdb        1.8T  1.7T   91G  95% /data
root@ubuntu4146:/data/gitlabData/repositories/Android/PhoneApp# 

После очистки дискового пространства, я могу использовать его, нажав снова.

В 16:05 я все еще не могу дать толчок

16:05. Push отклонено: функция Push / TalentAccountWatchChangeAssistant для источника / функция / TalentAccountWatchChangeAssistant была отклонена удаленным

После очистки диска сервера GitLab снова успешно выполните git push.

04:47 PM Успешное нажатие: отправлено 157 коммитов на источник / функцию / TalentAccountWatchChangeAssistant

резюме

Git push не работает, подскажите:unable to create temporary object directory , Должно быть, что права хранилища, соответствующие удаленному серверу, недостаточно. Может быть много причин, почему авторитет недостаточен, и это необходимо судить в соответствии с реальной ситуацией. На этот раз я столкнулся с проблемой, потому что диск сервера GitLab пропал, что делает невозможным запись файлов.

Другие читатели сталкиваются с этой проблемой, вы можете просто обратиться к ней, а затем решить эту проблему самостоятельно. Если вы не являетесь администратором сервера git и т. П., Вы можете попробовать связаться с администратором, чтобы решить эту проблему!


Автор: Оуян Пэн добро пожаловать на перепечатку, делиться с другими, является источником прогресса!
Перепечатайте, пожалуйста, сохраните оригинальный адрес:https://blog.csdn.net/qq446282412/article/details/81431208

Если вы считаете, что эта статья полезна для вас, вы можете отсканировать QR-коды Alipay и WeChat Pay, показанные на рисунке ниже, чтобы бесплатно вознаграждать эту статью. Ваша поддержка побудит меня продолжать создавать

Я пытаюсь создать новую ветку в своем репо.

Я сделал это:

git branch events
git Checkout events

Это сработало. Итак, я изменил несколько файлов и сделал:

git Status
git add --all
git commit -m "Commit"

Это сработало хорошо, но я попытался подтолкнуть его, и это не сработало:

git push -u origin events

Это ошибка:

Enumerating objects: 9, done.                                                                                                                       
Counting objects: 100% (9/9), done.                                                                                                                 
Delta compression using up to 4 threads.                                                                                                            
Compressing objects: 100% (5/5), done.                                                                                                              
Writing objects: 100% (5/5), 716 bytes | 716.00 KiB/s, done.                                                                                        
Total 5 (delta 4), reused 0 (delta 0)                                                                                                               
error: remote unpack failed: unable to create temporary object directory                                                                            
To http://git.int.censoredlink/scm/freeb/freebrep.git                                                                                       
 ! [remote rejected] events -> events (unpacker error)                                                                                              
error: failed to push some refs to 'http://stsu@git.int.censoredlink/scm/freeb/freebrep.git'

Не знаю, почему не работает.

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


Ответы
7

Это сообщение об ошибке:

error: remote unpack failed: unable to create temporary object directory

Указывает на то, что в репозитории Git в сервер (а не в вашем Git) не хватает места или возникают аналогичные проблемы с сервером, 1 или он установлен неправильно. То есть, учитывая:

To: http://git.int.censoredlink/scm/freeb/freebrep.git

Вам нужно будет войти в систему на машине, которая обслуживает HTTP-трафик на git.int.censoredlink, перейти в каталог scm/freeb/freebrep.git и исправить там установку. Скорее всего, это проблема с разрешениями: принимающий Git должен иметь возможность создать в области объектов каталог с именем incoming-XXXXXX с замененными идентификаторами X на уникальный идентификатор, а затем создать в этом каталоге подкаталог pack.

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

Примечание: довольно необычно отправлять URL-адреса http://, а не https:// или ssh://. Изучите конфигурацию вашего сервера, чтобы узнать, кому будут принадлежать различные файлы, созданные таким образом, и какие разрешения будут у веб-сервера.


1 Если жесткий диск выходит из строя, Linux иногда помечает диск и / или его файловые системы только для чтения. Или, даже если у вас есть место на диске, у вас могут закончиться inodes. Ряд различных основных причин приведет к одинаковому наблюдаемому поведению на стороне вашего клиента. Если вы администратор Linux, проверяющий сервер, ищите сообщения системного журнала и учитывайте как вывод df, так и df -i.

Я столкнулся с той же ошибкой, когда попытался перейти на «подвергнутый цензуре git server». Проблема была на стороне сервера. Вы можете подождать некоторое время, пока сервер вернется в рабочее состояние должным образом, или просто обратитесь к администратору, чтобы исправить это :)

Я получал ту же ошибку, пока не удалил подкаталог .git в удаленном репозитории git.

Подкаталог .git не был доступен для записи учетной записи git. Изначально у меня была проблема с разрешениями при попытке зафиксировать, и я подозреваю, что тогда был создан подкаталог .git.

Меня перенаправили сюда из-за этого сообщения об ошибке.

error: remote unpack failed: unable to create temporary object directory

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

Например, x.x.x.x:/nas/git on /mnt/git type nfs (ro,…..

Если вы работаете как root user, пожалуйста, сначала измените пользователя на your git user, а затем на init your git directory:

  1. если вы root -> $ [root @ server ~] #
  2. сменить пользователя -> $ su — имя пользователя
  3. запустить репозиторий git -> [имя пользователя @ сервер ~] $ git init —bare git-repo.git
  4. оттолкнуть от клиента -> Теперь вы можете нажимать из клиента:
    git remote add yourAliasName ssh://username@IP-or-HOST:sshPort/home/username/git-repo.git

Примечание:
Я предполагал, что вы уже создали public/private key в своем клиенте и передали открытый ключ в файл сервера /home/username/.ssh/authorized_keys. В противном случае вы должны сделать это до шага (4).

Недавно я столкнулся с этой ошибкой. Проблема заключалась в том, что у пользователя не было достаточных разрешений, например git remote add production ssh: // username @ {your-ip} / var / test / test.git`, убедитесь, что у имени пользователя нет разрешений

Скажем, на вашем Mac вы подключаетесь к собственному серверу ubuntu на AWS.

Скорее всего это вы будете подключаться как пользователь «убунту».

Если разрешения не являются проблемой (это только вы), просто войдите на свой сервер ubuntu и просто

] chown ubuntu:ubuntu

Весь рассматриваемый каталог git. Это будет работать нормально.

Другие вопросы по теме

Понравилась статья? Поделить с друзьями:
  • Error remote target already exists
  • Error remote origin already exists что это
  • Error remote origin already exists что значит
  • Error remote origin already exists переводчик
  • Error referenceerror regeneratorruntime is not defined