尝试将生产分支从一个干净的分支上重新定位,我没有做任何更改,这有点落后。
被告知我有未提交的更改,要么提交它们,要么隐藏它们,但是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创建的,你以流浪汉的身份登录。
你的选择是:
- 在做git工作之前以www-data (
su www-data
)登录 - 将repo的所有者更改为vagrant (
chown -R vagrant *
) - 更改repo的权限以允许组写,因为两个id都在流浪组(
chgrp -R vagrant *
) - 使用正确的所有者和权限挂载磁盘或目录。对于Vagrant,您的Vagrantfile的
config.vm.synced_folder
配置涵盖了以下内容:请参阅Vagrant文档。
无论你做什么,确保任何其他需要使用git的东西保留它需要的访问权限。既然是www-data创建的repo,你很可能使用了某种web服务/应用程序来完成它;因此,如果您将repo的所有者更改为vagrant,则可能需要更改web服务/应用程序,以便它也由vagrant运行。