gpt4 book ai didi

linux - git:与权限问题相关的无法推送(解包器错误)

转载 作者:IT老高 更新时间:2023-10-28 12:34:07 32 4
gpt4 key购买 nike

当我尝试推送 git 时遇到了这个问题:

error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To ssh://<repo url>/<repo dir>
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh://<repo url>/<repo dir>'

我以前偶尔遇到过这个问题,我们总是不得不通过每个用户 ssh 到 repo 并使用

对其中的所有文件设置组权限来解决它
chmod -R g+w *

这从来都不是一个令人满意的解决方案,现在因为其中一个人不在并且没有人知道他的 repo 用户的密码,这让我们感到很痛苦。所以,我正在尝试正确解决它。

当有人尝试推送将更改另一个用户拥有的 repo 目录的更改时,似乎会发生该错误(因此在上面设置了组写入选项)。我已经对此进行了一些谷歌搜索,并发现了一些正在讨论的解决方案(这两种解决方案都不适合我)

1) 确保与 repo 目录共享的组是每个用户的主要组(我相信情况已经如此:每个用户只有一个组,因此必须是他们的主要组,对吗?)

2) git repo core.sharedRepository 设置,详见此处:Git: Can't push from one computer我改变了这个,但它没有任何区别。我是否需要重新加载配置或其他东西才能真正影响更改?

这是我的 repo 配置看起来像 atm:

[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedRepository = all
[receive]
denyNonFastForwards = True

感谢任何意见或建议!最大值

最佳答案

我有这个错误两周了,大多数解决方案都将“chmod -R”作为答案,不幸的是我的 git repos(本地/远程/与团队共享)都在 Windows 操作系统上,即使 chmod -Rv 显示所有文件都更改为“rwxrwxrwx”,随后的“ls -l”仍将所有文件显示为“rwxr-xr-x”,并且错误重复出现。终于看到了this solution由阿里扬德弗鲁姆。它奏效了,我们都能够再次 pull 和 push 。

在本地(推送有问题的本地)和远程仓库上,运行以下命令:

$ git fsck
$ git prune
$ git repack
$ git fsck

顺便说一句,我尝试使用 Windows 的 native 文件权限/ACL,甚至将问题用户提升为管理员,但这些似乎都没有帮助。不确定环境是否重要,但它可能对具有类似设置的人有所帮助 - 问题团队成员和远程(Windows Server 2008 R2 Standard),我的本地(Windows 7 VM)。

关于linux - git:与权限问题相关的无法推送(解包器错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025708/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com