无法从流浪机器的主机文件系统上重新base、存储或提交git repo:无法创建/.git/index.lock



尝试将生产分支从一个干净的分支上重新定位,我没有做任何更改,这有点落后。

被告知我有未提交的更改,要么提交它们,要么隐藏它们,但是git status显示没有对这个分支上的任何文件进行更改。

所以为了好玩,我决定把变化藏起来。当我尝试,我得到错误:

fatal: Unable to create '/var/www/MyProject/.git/index.lock': Permission denied
Cannot save the current index state

所以我尝试了这个技巧:

sudo rm -f /var/www/MyProject/.git/index.lock

但这没有帮助。所以我又试了一次,用git reset执行这个命令,但是reset抛出了同样的permission denied error。

然后我尝试了sudo git reset工作,但是当我测试git rebase production时,我得到了这个错误:

First, rewinding head to replay your work on top of it...
fatal: Unable to create '/var/www/MyProject/.git/index.lock': Permission denied
could not detach HEAD

如何解决这些权限问题?

您正在使用不同的用户来创建和管理存储库。你的repo是由www-data创建的,你以流浪汉的身份登录。

你的选择是:

  1. 在做git工作之前以www-data (su www-data)登录
  2. 将repo的所有者更改为vagrant (chown -R vagrant *)
  3. 更改repo的权限以允许组写,因为两个id都在流浪组(chgrp -R vagrant *)
  4. 使用正确的所有者和权限挂载磁盘或目录。对于Vagrant,您的Vagrantfile的config.vm.synced_folder配置涵盖了以下内容:请参阅Vagrant文档。

无论你做什么,确保任何其他需要使用git的东西保留它需要的访问权限。既然是www-data创建的repo,你很可能使用了某种web服务/应用程序来完成它;因此,如果您将repo的所有者更改为vagrant,则可能需要更改web服务/应用程序,以便它也由vagrant运行。

最新更新