无法从Vagrant机器对主机文件系统进行rebase,stash或commit git repo:无法创建/.git/index.lock

时间:2015-10-27 01:12:48

标签: git vagrant

尝试从一个干净的分支机构转移到生产分支机构我没有做出任何改变,但这有点落后。

被告知我有未提交的更改并提交或存储它们,但是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跟随该命令,但重置会抛出相同的权限被拒绝错误。

然后我尝试了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

如何修复这些权限问题?

这是一个运行Ubuntu 14.04的流浪盒。

1 个答案:

答案 0 :(得分:0)

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

您的选择是:

  1. 在执行git work之前以www-data(su www-data)身份登录。
  2. 将回购的所有者更改为vagrant(chown -R vagrant *
  3. 更改repo的权限以允许组写,因为两个ID都在vagrant组中(chgrp -R vagrant *
  4. 使用正确的所有者和权限装入光盘或目录。对于Vagrant,您的Vagrantfile的config.vm.synced_folder配置涵盖了这一点:请参阅Vagrant Docs
  5. 无论你做什么,确保任何需要使用git的东西都能保留所需的任何访问权限。由于www-data创建了repo,因此您可能使用某种Web服务/应用程序来执行此操作;因此,如果您将repo的所有者更改为vagrant,您可能需要更改Web服务/应用程序,以便它也可以由vagrant运行。