git repo中的文件变得不可访问

时间:2018-12-19 14:54:06

标签: git vmware vmware-workstation

我要在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。

这是怎么回事呢?如何阻止此问题的发生?

1 个答案:

答案 0 :(得分:2)

此:

  

我正在Win 10工作站和在VMWare工作站上运行的Linux VM之间共享我的git目录(我将所有git仓库保存在其中)。

几乎可以肯定是问题所在。

这种共享存储永远无法正常工作。 1 在Git中的表现尤其糟糕,Git坚持对其.git目录进行完全,完整的100%控制。以这种方式使用Git有两个经验法则:

  1. 不要这样做。
  2. 如果必须执行此操作,请确保至少从一侧将其100%只读。

由于Git已经拥有自己的共享协议,因此设置VMWare或VirtualBox系统非常容易,因此主机和客户端只是两台不同的计算机,具有两个不同的Git存储库, git push和/或git pull在它们之间传输对象。这样,每个Git都可以完全,完全,100%地控制自己的.git和相应的工作树,并且正常。


什么,从来没有?
好,几乎没有!