Answers:
这里发生了几件事情:
当您使用时sudo git checkout ...
,所有这些文件均由root用户和root组拥有。使用标准权限,这就是为什么对这些文件进行后续更改要求您具有root用户的原因。
/var/www/
默认情况下为www-data
组所有。您的用户默认情况下不是。
写入的最简单方法/var/www/
是将您的用户添加到www-data组。当然,您可以将目录更改为用户拥有,但是如果您不抢先使用,可能会带来一些讨厌的连锁反应。
将用户添加到www-data组后,您需要重新登录。
具体来说,您将需要修复当前混乱的根拥有数据。您可以将其作为根用户删除(然后重新签出),但是如果您有未保存的工作,将所有内容都拉回到用户手中会更干净。以下示例非常懒惰,并假定我们正在谈论的是/ var / www /中唯一的内容:
sudo chown -R www-data: /var/www/
.git
目录的访问权限可以使他们对您不希望其访问的内容具有访问权限,但是您可以防止访问.git/
目录,从而减轻了整个问题。
嗯,更改文件夹所有者?我将www文件夹移到/ home / username中,您可以在/ etc / apache2 / sites-enabled / 000-default中更改它的位置
/var/www
无法编写。
我对这个答案有点迟了,但是我发现为了避免每次都要将仓库从https更改为ssh时都输入密码。
从Github.com帮助部分:
git remote set-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 git@github.com:USERNAME/REPOSITORY.git
验证远程URL是否已更改。
git remote -v
#验证新的远程URL
origin git@github.com:USERNAME/REPOSITORY.git (fetch)
origin git@github.com:USERNAME/REPOSITORY.git (push)
sudo git checkout
进入另一个目录,然后在/ var / www目录中部署我的应用程序吗?我只是在某处读到,将项目检入var目录通常不是一个好主意。一个人推荐的项目检查出到主目录