27

我正在尝试在我的仓库中创建一个新分支。

我这样做了:

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'

我不知道为什么它不起作用。

我对回购有管理员权限。我审查了回购的链接,因为它是一个带有私人链接的内部回购。

4

9 回答 9

27

此错误消息:

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-XXXXXXsX替换为唯一标识符的目录,然后在该目录中创建一个pack子目录。

所有传入的对象和包文件都放置在这些目录中,在一种隔离过程中,直到服务器端 Git 挂钩对引用名称更新请求感到满意。如果推送失败,则简单地删除隔离目录。如果推送成功,则将隔离对象和/或包文件迁移(并调整精简包)到正常对象存储区域。请注意,即使隔离过程成功,迁移也可能失败;但如果这样做,您会收到一个不同的错误报告给客户端。(这个错误也必须在服务器上更正。)

注意:推送到http://而不是https://ssh://URL 是相当不寻常的。检查您的服务器配置,看看谁将拥有由此创建的各种文件,以及 Web 服务器将拥有哪些权限。


1如果硬盘驱动器出现故障,Linux 有时会将驱动器和/或其文件系统标记为只读。或者,即使您有磁盘空间,也可能会用完 inode。许多不同的根本原因都会导致在您的客户端上观察到相同的行为。如果您是检查服务器的 Linux 管理员,请查找系统日志消息,并考虑两者dfdf -i输出。

于 2018-07-24T16:42:12.187 回答
5

如果您以 身份工作root user请先将用户更改为your git user,然后init your git directory

  1. 如果你是 root -> $ [root@server ~]#
  2. 更改用户-> $ su - 用户名
  3. 初始化一个 git repo -> [username@server ~] $ 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) 之前执行此操作。

于 2020-07-19T13:18:57.223 回答
4

90% 的可能性是权限问题。

  1. 登录到远程服务器。
  2. 导航到“freebrep.git”所在的“/scm/freeb”。
  3. 调用 chown -R yourusername freebrep.git (您的用户名是 stsu )
  4. 再试一次。现在它应该允许写入对象。
于 2021-09-01T15:12:39.507 回答
1

最近我确实遇到了这个错误。问题是用户没有足够的权限,例如 git remote add production ssh://username@{your-ip}/var/test/test.git` 确保用户名没有权限

于 2021-02-26T11:59:08.553 回答
1

由于此错误消息,我被重定向到这里。

错误:远程解包失败:无法创建临时对象目录

仅供参考:当您以只读方式安装 git 目录时也会发生这种情况

例如x.x.x.x:/nas/git on /mnt/git type nfs (ro,.....

于 2019-02-20T10:04:55.677 回答
1

在删除远程 git 存储库中的 .git 子目录之前,我遇到了同样的错误。

.git 子目录不可被 git 登录帐户写入。最初我在尝试提交时遇到了权限问题,我怀疑当时创建了 .git 子目录。

于 2018-12-26T01:58:11.983 回答
0

假设在您的 Mac 上连接到 AWS 上您自己的 ubuntu 服务器。

您可能会以用户“ubuntu”的身份进行连接。

如果权限不是问题(只是您),只需登录到您的 ubuntu 服务器,然后

] chown ubuntu:ubuntu

所有有问题的 git 目录。那会很好用。

于 2021-04-27T16:34:47.213 回答
0

对我来说,这是一个悬空的、崩溃的 gitk-session:专门阻止 windows 机器上的文件访问。

于 2021-07-13T10:15:50.527 回答
0

当我尝试推送到“审查的 git 服务器”时,我遇到了同样的错误。问题出在服务器端。您可以等待一段时间,直到服务器正常恢复联机,或者只是联系管理员修复它:)

于 2018-10-26T05:50:36.187 回答