执行git remote set-url后repo/config权限丢失致Capistrano部署失败
Capistrano部署报错:
fatal: unable to access './config': Permission denied 解决方法 问题现象
执行 cap production deploy 进行部署时,Capistrano返回如下错误:
DEBUG [3730481e] fatal: unable to access './config': Permission denied
经排查,问题源于执行 git remote set-url origin https://myawesometoken:@github.com/myawesomeusername/myawesomeproject.git 命令后,仓库的 repo/config 文件权限异常丢失:
- 命令执行前,文件权限为0664:
-rw-rw-r-- 1 ec ec 217 Mar 1 12:08 config
- 命令执行后,权限被重置为0000:
---------- 1 ec ec 217 Mar 1 12:09 config
当前 repo/config 文件内容如下:
[core] repositoryformatversion = 0 filemode = true bare = true [remote "origin"] url = https://myawesometoken:@github.com/myawesomeusername/myawesomeproject.git fetch = +refs/*:refs/* mirror = true
原因分析
执行 git remote set-url 修改远程仓库地址时,Git在更新 config 文件后错误地重置了文件权限,导致所有用户均无法读取该文件,最终引发Capistrano部署时Git无法访问配置文件的报错。
解决方案
1. 修复文件权限
手动恢复 repo/config 的正常可读权限:
chmod 0664 /path/to/your/repo/config
将 /path/to/your/repo 替换为实际的仓库路径。
2. 重新执行部署
权限修复完成后,再次运行Capistrano部署命令:
cap production deploy
3. 预防后续权限异常(可选)
如果后续执行 git remote set-url 仍出现权限问题,可先临时关闭Git的文件权限跟踪:
git config core.filemode false
修改完远程地址后,若需要可重新开启:
git config core.filemode true
内容的提问来源于stack exchange,提问作者wanfujinan
相关产品推荐
相关产品推荐

