尝试对我的GitHub存储库执行"git push"时,我回到了一个不寻常的错误:
Counting objects: 8, done. Delta compression using 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 1.37 KiB, done. Total 5 (delta 2), reused 0 (delta 0) error: insufficient permission for adding an object to repository database ./objects fatal: failed to write object error: unpack-objects exited with error code 128 error: unpack failed: unpack-objects abnormal exit To git@github.com:bixo/bixo.git ! [remote rejected] master -> master (n/a (unpacker error)) error: failed to push some refs to 'git@github.com:bixo/bixo.git'
上面的存储库是我以前的Stack Overflow问题(SO 1904860)的乐趣之源,所以可能GitHub repo被破坏了.我通过搜索发现的唯一类似问题是在github上报告的解包失败问题.有没有其他人遇到此问题,尤其是在不使用GitHub时?
syv*_*vex 210
当你在github之外看到这个错误时,这是一个补救措施.
来自这里:http: //mapopa.blogspot.com/2009/10/git-insufficient-permission-for-adding.html
ssh me@myserver
cd repository/.git
sudo chmod -R g+ws *
sudo chgrp -R mygroup *
git config core.sharedRepository true
Run Code Online (Sandbox Code Playgroud)
在此之后,git守护程序在写入.git/objects时应使用组文件权限.
Bij*_*jan 54
通常,此问题是由Git服务器文件系统上的用户和组权限错误引起的.git存储库必须由用户和他的组拥有.
例:
如果您的用户被称为"git",他的组"gitgroup",以及Git仓库的位置是:git@mygitserverxyz.com:path/to/repo.git
然后做一个:
sudo chown -R git:gitgroup path/to/repo.git/
这为我修复了git不足的权限错误.
Far*_*mov 34
sudo chmod 777 -R .git/objects
Run Code Online (Sandbox Code Playgroud)
Tho*_*mas 10
当我尝试时,这发生在我身上git pull.一些分析表明,过去曾有人提交root用户,从而创建了一些拥有root权限的对象.git/objects.
所以我跑了
cd <repo>
la .git/objects/
Run Code Online (Sandbox Code Playgroud)
并且显示了root对某些对象(目录)的所有权,如下所示:
user@host:/repo> la .git/objects/
total 540
drwxr-xr-x 135 user user 4096 Jun 16 16:29 .
drwxr-xr-x 8 user user 4096 Jun 16 16:33 ..
drwxr-xr-x 2 user user 4096 Mar 1 17:28 01
drwxr-xr-x 2 user user 4096 Mar 1 17:28 02
drwxr-xr-x 2 user user 4096 Jun 16 16:27 03
drwxr-xr-x 2 user user 4096 Mar 3 13:22 04
drwxr-xr-x 2 root root 4096 Jun 16 16:29 05
drwxr-xr-x 2 user user 4096 Jun 16 16:28 07
drwxr-xr-x 2 root root 4096 Jun 16 16:29 08
Run Code Online (Sandbox Code Playgroud)
然后我跑了
sudo chown -R user:user .git/objects/
Run Code Online (Sandbox Code Playgroud)
它工作了!
当然,我正在用我的真实用户替换用户.
小智 5
chmod 应该是 chown,所以正确的行是:
sudo chown -R gituser:gituser objects
Run Code Online (Sandbox Code Playgroud)
以上都没有对我有用。几个小时后,我找到了问题的原因:我使用了该类型的 repo url
Run Code Online (Sandbox Code Playgroud)ssh://git@example.com/~git/repo.git
不幸的是,我存储了一个名称example.com为 user的腻子会话myOtherUser。
因此,虽然我认为 gitexample.com使用用户 'git'连接到主机,但 Git/TortoiseGit 已连接到example.com使用 User的腻子会话myOtherUser。这会导致完全相同的..insufficient permission..错误(因为两个用户都在不同的组中)。
解决方法:将putty session重命名example.com为myOtherUse@example.com
好的 - 结果是 GitHub 上的权限问题发生在 emi/bixo 到 bixo/bixo 的 fork 过程中。Tekkub 修复这些问题后,它又开始工作了。