如何防止 git 在每个 git 命令上都需要 sudo

如何防止 git 在每个 git 命令上都需要 sudo

我创建了一个目录/var/www来存储我的 Web 应用程序克隆。当我最初从 GitHub 克隆应用程序时,它要求我使用 sudo,并且每次我执行它时都git pull需要 sudo。因此我遇到了一些问题。例如,我的 ssh 密钥不匹配。因此,当我执行时git pull,每次我想要提取和更新我的应用程序时,我都必须使用 HTTPS 而不是 ssh 并手动输入我的用户名和密码。我该如何配置它,以便每次使用 git 时都不必使用 sudo?

答案1

这里发生了几件事:

  • 当您 时sudo git checkout ...,所有这些文件都归 root 用户和 root 组所有。由于具有标准权限,因此随后对这些文件的修改需要您成为 root。

  • /var/www/默认情况下由组拥有www-data。默认情况下,您的用户不属于该组。

最简单的写入方式/var/www/将您的用户添加到 www-data 组。当然,您可以将目录更改为由您的用户拥有,但如果您不预先阻止,这可能会产生一些令人讨厌的连锁反应。

将用户添加到 www-data 组后,您需要重新登录。

具体来说,您需要修复当前 root 拥有的数据混乱问题。您可以将其作为 root 删除(然后重新签出),但如果您有未保存的工作,将所有内容拉回给您的用户会更干净。以下示例非常懒惰,并假设我们正在讨论的是 /var/www/ 中唯一的东西:

sudo chown -R www-data: /var/www/

答案2

嗯,更改文件夹所有者?我将 www 文件夹移到了 /home/username 中,您可以在 /etc/apache2/sites-enabled/000-default 中更改其位置

答案3

我的答案有点晚了,但我发现为了避免每次都输入密码,我必须将 repo 从 https 更改为 ssh。

来自 Github.com 帮助部分:

git远程设置 URL命令更改现有的远程存储库 URL。

打开终端。

将当前工作目录更改为本地项目。

列出您现有的遥控器以获取您想要更改的遥控器的名称。

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

使用 git remote set-url 命令将远程的 URL 从 HTTPS 更改为 SSH。

git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

验证远程 URL 是否已改变。

git remote -v

# 验证新的远程 URL

origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
origin  [email protected]:USERNAME/REPOSITORY.git (push)

相关内容