【问题标题】:error: unable to write sha1 while trying to push to gitlab错误:尝试推送到 gitlab 时无法写入 sha1
【发布时间】:2018-06-16 10:32:15
【问题描述】:

我试图推送单个 pdf 文件,但出现此错误:

error: unable to write sha1 filename ./objects/54/1cc9d1b18f218c85f9d7f5fe7a129ab595f: No such file or directory
To git@gitlab.com:myrepo
 ! [remote rejected] master -> master (unable to migrate objects to permanent storage)
error: failed to push some refs to 'git@gitlab.com:myrepo

知道发生了什么!?这是什么 sha1 文件!?

【问题讨论】:

标签: git gitlab push


【解决方案1】:

这很奇怪:最初的错误消息应该以单词remote:为前缀,即:

remote: error: unable to write sha1 filename ./objects/54/1cc9d1b18f218c85f9d7f5fe7a129ab595f: No such file or directory
To git@gitlab.com:myrepo
 ! [remote rejected] master -> master (unable to migrate objects to permanent storage)
error: failed to push some refs to 'git@gitlab.com:myrepo

是有道理的,但这个错误,没有remote: 前缀,没有。

任何以 remote: 为前缀的错误都来自另一个 Git。当您运行 git push 时,您的 Git 会调用另一个 Git 并将信息(包括 Git 对象)发送到另一个 Git。其他 Git 会进行一些验证以确定您的 git push 是否被允许。一旦完成所有检查,并确定允许更新,Git 通过将对象合并到其存储库并最终确定所有内容来完成。

如果错误以remote: 为前缀,那么这将是有道理的:远程——另一个 Git——试图完成所有事情,但在此过程中出现了问题。然后他们让你的 Git 知道问题发生了,所以你的 Git 复制了错误消息,并在其前面加上 remote:,然后 your Git 自己打印最后三行,让你知道出了点问题。

简而言之,这意味着问题出在另一台计算机上,而不是您的计算机上。您必须将它展示给管理另一台计算机的人(在gitlab.com),并让他们看看他们的系统出了什么问题。

但如果没有remote:,这种分析都站不住脚。

【讨论】:

  • sha1 是什么意思!?可能是低内存或磁盘的bc?
  • sha1 是 Git 使用的内部哈希。使用remote:,“另一台计算机上的磁盘空间不足”和权限错误一样有意义:Git 使用对象的哈希 ID 来形成将存储与该键关联的数据的文件的名称。现代 Git 在接收传入的对象时,将它们存储在“隔离”区域,直到它们决定接受它们,然后将它们复制到永久存储,并且在此错误消息前面加上 remote:,这表明远程 Git 已经未能将对象复制到永久存储。
  • 再一次,如果错误消息remote:开头,这些都不正确。此外,如果错误消息确实remote: 开头,则这些问题都不是你的问题。
  • 上传多少可能会给远程gitlab机器带来麻烦?!我上传了大约 30GB。我没有得到你关于 sha1 的解释。我以为你说这是我尝试发送的对象的哈希值,但实际上我在不同时间针对不同文件两次收到此错误,所以我不希望我的对象具有相同的哈希值。我不确定错误发生在一段时间前的远程事情,现在它已经消失了。我会确定它是否会再次发生。
  • 30 GB 对他们来说可能太大了。很难说:如果问题出在芝加哥,那么您在京都检查建筑物的仔细程度并不重要。至于哈希ID:任何对象的哈希ID完全由该对象的内容决定。同一个文件将始终具有相同的哈希 ID,但两个不同的文件将获得两个不同的哈希 ID。
猜你喜欢
  • 1970-01-01
  • 2020-03-04
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 2016-03-18
  • 2021-12-10
相关资源
最近更新 更多