.git/config 尝试在 ubuntu 上添加远程时权限被拒绝

.git/config permission denied when trying to add remote on ubuntu

我正在尝试向现有 git 项目添加一个额外的远程,以便我可以使用 git 远程添加用户 2 [=28] 将代码推送到辅助 bitbucket 存储库=]@bitbucket.org:... ,但出现以下错误:

error: could not lock config file .git/config: Permission denied

这是一个旧项目,所以我不确定它最初是如何设置的,但看起来它可能是以 root 身份安装的。

我尝试检查 .git 和 .git/config 的文件权限,我可以看到它属于 www-data。我当前的用户是 www-data 组的一部分,但我仍然遇到同样的错误。

我还检查了 .git/config.lock 文件以防它被阻塞但没有。

我不喜欢将 sudo 与 .git 一起使用,所以我想知道是否有人可以给我一些关于如何处理这个问题的最佳实践建议

让所有的东西都归一个团体所有是可行的方法,但你必须 确保所有内容都具有组写权限,并且每个文件递归地位于 www-data 组中:

  sudo chown -R :www-data /path/to/git/repo
  sudo chmod -R g+w /path/to/git/repo

然后 运行 你的 git 命令。

如果您的权限设置正确,则不必将 sudogit 一起使用。

这听起来像是一个基本的权限问题。您发现自己是该组的一员,但如果您希望通过组权限进行访问,则还需要该文件具有组 rw 权限,例如chmod g+rw .git/config。或者你需要成为相关文件的所有者,还有 rw.

自从你提到 www-data 作为组,我想知道你是否在服务器上。如果您使用服务器 OS,例如 CentOS,您可能有 SELinux 运行,在这种情况下,这是您需要处理的另一层权限。使用 ls -alZ 查看 SELinux 权限(如果存在)。