Git执行push推送时报错failed to push some refs to该如何解决?
Git push权限报错分析与解决
从给出的报错日志中核心错误为remote: error: insufficient permission for adding an object to repository database ./objects,可直接定位问题根源为远端Git仓库目录权限配置异常。
报错原因
- 你本地执行push操作使用的Git认证账号(SSH/HTTP认证账号),没有远端Git仓库存储目录下
./objects文件夹的写入权限,导致本地推送的Git对象无法写入远端仓库数据库 - 常见触发场景:
- 自建远端Git服务器上,曾有高权限账号(如root)操作过仓库文件,修改了仓库目录/文件的所属权,覆盖了原有Git服务账号的权限
- 远端仓库初始化时未正确配置权限,未给对应操作账号开放读写权限
- Git服务运行账号与仓库文件所属账号不一致,比如Gitlab服务默认运行账号为
git,但仓库目录所属用户为root,就会触发写入失败 - 第三方托管平台上你的账号没有该仓库的写入权限,或认证信息已过期失效
对应解决方法
场景1:远端仓库部署在自己可登录的服务器
- 登录远端服务器,进入Git仓库的上级目录,比如仓库路径为
/home/git/repos/demo.git,执行命令:cd /home/git/repos/ - 递归修改仓库目录的所属用户和用户组为Git服务对应的账号,以常用的
git服务账号为例:sudo chown -R git:git demo.git/ - 递归修改仓库目录权限,确保同组用户有读写执行权限:
sudo chmod -R 775 demo.git/ - 若为多人共享仓库,建议开启Git共享配置,避免后续再出现权限冲突,进入仓库目录执行:
git config core.sharedRepository group
场景2:远端仓库为Github/Gitlab/Gitee等第三方托管平台
- 首先确认你的账号在对应仓库中拥有写入权限,若为协作者请联系仓库管理员确认你的权限等级是否为可写,若为fork的上游仓库你没有直接推送权限,需提交PR申请合并
- 检查本地Git的认证信息是否有效:SSH密钥是否已从平台账号中移除、HTTP使用的token/密码是否已过期,重新配置正确的认证信息后再执行push操作
内容的提问来源于stack exchange,提问作者Kenny Pan
相关产品推荐
相关产品推荐

