git: failed to write object

 前言问题

想在git服务器上上传一个doc.xmind 这个文件,没想到push不上,提示error如下:

[cc lang=”php”]
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 87.30 KiB | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To git@123.7.7.7:/home/git/doc.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to ‘git@123.7.7.7:/home/git/doc.git’
bogon:doc rongtian$ git push origin master

[/cc]

到这想起自己又犯了一个傻x错误,这是因为创建git裸仓库时root直接创建的,所以doc.git是root的人,到底是不是有一腿可以验证如下:
[cc lang=”php”]

ls -a

[/cc]

这就是权限问题,解决办法如下:

[cc lang=”php”]

chown -vR git *

[/cc]

如果不知道上面vR  毛意思 可以(chown –help)

这时候你会看到,root的权限全部转移到git账号上

[cc lang=”php”]

[root@iZ2541xpoatZ doc.git]# chown -vR git *
“branches” 的所有者已更改为git
“config” 的所有者已更改为git
“description” 的所有者已更改为git
“HEAD” 的所有者已更改为git
“hooks/prepare-commit-msg.sample” 的所有者已更改为git
“hooks/pre-commit.sample” 的所有者已更改为git
“hooks/post-receive.sample” 的所有者已更改为git
“hooks/pre-applypatch.sample” 的所有者已更改为git
“hooks/post-commit.sample” 的所有者已更改为git
“hooks/update.sample” 的所有者已更改为git
“hooks/commit-msg.sample” 的所有者已更改为git
“hooks/post-update.sample” 的所有者已更改为git
“hooks/pre-rebase.sample” 的所有者已更改为git
“hooks/applypatch-msg.sample” 的所有者已更改为git
“hooks” 的所有者已更改为git
“info/exclude” 的所有者已更改为git
“info” 的所有者已更改为git
“objects/pack” 的所有者已更改为git
“objects/info” 的所有者已更改为git
“objects” 的所有者已更改为git
“refs/tags” 的所有者已更改为git
“refs/heads” 的所有者已更改为git
“refs” 的所有者已更改为git

[/cc]
这样你在试下push就OK了。

总结:谁创建谁享有权限,git账号在团队中共用,如果不是git所属必须要转移到git账号下,chown -vR git *

发表回复

电子邮件地址不会被公开。 必填项已用*标注