我要在Win 10工作站和在VMWare工作站上运行的Linux VM之间共享我的git目录(我将所有git仓库保存在其中)。使用一段时间后,正在使用的脚本(称为aws_utils.sh)变得不可访问。
我刚刚将一些更改保存到文件中,提交并推送了它们。然后我切换分支。我看到此消息:
git checkout update_aws_list_rds
error: unable to create file aws_utils.sh: Permission denied
Switched to branch 'update_aws_list_rds'
D aws_utils.sh
我没有删除此文件。这是我的主文件,我不会这样做。
然后我看一下该文件的权限,它们看起来像这样(在Linux下):
-????????? ? ? ? ? ? aws_utils.sh
我对文件无能为力
ls -lh aws_utils.sh
ls: cannot access 'aws_utils.sh': Permission denied
即使是root用户,我也无法列出文件:
ls -lh aws_utils.sh
ls: cannot access 'aws_utils.sh': Permission denied
whoami
root
然后几分钟后,文件就消失了,就好像我已将其删除一样。并且执行git pull不会还原文件。
我必须从字面上删除目录,然后再次克隆它以取回文件。
我检入了update_aws_list_rds分支,并在再次克隆目录之后删除了该目录之前丢失的文件。
我正在使用git版本2.17.1和VMware Player 15。
这是怎么回事呢?如何阻止此问题的发生?
答案 0 :(得分:2)
此:
我正在Win 10工作站和在VMWare工作站上运行的Linux VM之间共享我的git目录(我将所有git仓库保存在其中)。
几乎可以肯定是问题所在。
这种共享存储永远无法正常工作。 1 在Git中的表现尤其糟糕,Git坚持对其.git
目录进行完全,完整的100%控制。以这种方式使用Git有两个经验法则:
由于Git已经拥有自己的共享协议,因此设置VMWare或VirtualBox系统非常容易,因此主机和客户端只是两台不同的计算机,具有两个不同的Git存储库, git push
和/或git pull
在它们之间传输对象。这样,每个Git都可以完全,完全,100%地控制自己的.git
和相应的工作树,并且做正常。
什么,从来没有?
好,几乎没有!