Linux不同账号同路径下git status结果不一致如何调整一致?
问题解决步骤
核心原因
super账号对~/dnmp/www/localhost/.git目录无读取/执行权限,git遍历当前目录找不到.git仓库时会向上层级查找,匹配到了上层~/dnmp/目录下的.git仓库,所以返回的是上层仓库的状态;root账号有权限读取当前目录的.git仓库,返回的是localhost下仓库的状态,这是两者返回结果差异的核心来源,super账号git pull失败也是.git目录权限不足导致的。
操作步骤
- 步骤1:验证根目录差异
分别在两个账号的~/dnmp/www/localhost路径下执行命令:
预期结果:super账号输出为git rev-parse --show-toplevel/home/super/dnmp,root账号输出为/root/dnmp/www/localhost(如果两个账号访问的是同一路径则输出对应统一绝对路径),即可确认根因匹配。 - 步骤2:修正目录权限
切换为root账号执行以下命令,给super账号开放~/dnmp/www/localhost目录的对应权限:
如果该目录仅归super使用,直接修改属主即可:
如果需要多账号共用该目录,修改公共权限即可:chown -R super:super ~/dnmp/www/localhostchmod -R g+rw ~/dnmp/www/localhost find ~/dnmp/www/localhost -type d -exec chmod g+x {} \; - 步骤3:验证修复结果
切换回super账号,重新进入~/dnmp/www/localhost路径,执行git status即可看到和root账号一致的返回结果,git pull操作也可正常执行。
内容的提问来源于stack exchange,提问作者敬錞 潘
相关产品推荐
相关产品推荐

