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

git repo中的文件变得不可访问,git,vmware,vmware-workstation,Git,Vmware,Vmware Workstation,我在win 10工作站和在VMWare工作站上运行的Linux虚拟机之间共享我的git目录(保存所有git repo的地方)。使用它一段时间后,我正在使用的脚本(称为aws_utils.sh)变得不可访问 我只是将一些更改保存到一个文件中,提交并推送它们。然后我切换分支。我看到这样的信息: git checkout update_aws_list_rds error: unable to create file aws_utils.sh: Permission denied Switched

我在win 10工作站和在VMWare工作站上运行的Linux虚拟机之间共享我的git目录(保存所有git repo的地方)。使用它一段时间后,我正在使用的脚本(称为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下):

我对这个文件无能为力:

ls -lh aws_utils.sh 
ls: cannot access 'aws_utils.sh': Permission denied
ls -lh aws_utils.sh 
ls: cannot access 'aws_utils.sh': Permission denied
whoami
root
即使是root用户,我也无法列出文件:

ls -lh aws_utils.sh 
ls: cannot access 'aws_utils.sh': Permission denied
ls -lh aws_utils.sh 
ls: cannot access 'aws_utils.sh': Permission denied
whoami
root
几分钟后,文件就消失了,就好像我把它删除了一样。而且执行git拉取不会恢复文件

我必须从字面上删除目录,并再次克隆它,以取回文件

我签入update_aws_list_rds分支,在我再次克隆目录后,删除目录之前丢失的文件就在那里了

我使用的是git版本2.17.1和VMware player 15

到底是什么导致了这一切?如何阻止此问题的发生?

此:

我在win 10工作站和在VMWare工作站上运行的Linux虚拟机之间共享我的git目录(保存所有git repo的地方)

这几乎肯定是问题所在

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

  • 不要这样做
  • 如果必须这样做,请确保至少从一侧执行100%只读操作
  • 由于Git已经有了自己的共享协议,因此很容易设置VMWare或VirtualBox系统,以便主机和客户端只是两台不同的机器,具有两个不同的Git存储库,它们使用
    Git push
    和/或
    Git pull
    在它们之间传输对象。这样,每个Git都可以完全、完整、100%地控制它自己的
    .Git
    和相应的工作树,而且工作正常



    什么,从来没有?
    嗯,几乎从来没有

    好的,谢谢。我只是停止使用我的共享存储用于此目的。我实际上并不仅仅是在分享git文件夹。我在共享一个父文件夹,其中有很多其他我共享的东西,git目录正好在那里。我刚刚把git文件夹从那里移到了windows机器和linux虚拟机上的本地文件夹中。这应该可以解决这个问题。我在我的Mac电脑上有一个类似的Linux虚拟机设置,这真的很烦人,因为MacOS和Linux应该能够比Windows和Linux更好地协同工作。我使用一些共享文件夹偶尔进行文件传输,但为了可靠性,我必须将几乎所有的Linux端数据保留在非共享区域。