我创建了一个目录/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)