git 存储库中的文件变得无法访问
File in git repo becomes inaccessible
我正在我的 win 10 工作站和 VMWare Workstation 上的 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 拉取不会恢复文件。
我必须从字面上删除目录并再次克隆它才能取回文件。
我检查了 update_aws_list_rds 分支,在我再次克隆该目录后,我删除该目录之前消失的文件就在那里。
我正在使用 git 版本 2.17.1 和 VMware player 15。
这是怎么回事?我怎样才能阻止这个问题发生?
这个:
I am sharing my git directory (where I keep all my git repos) between my win 10 workstation and a Linux VM running on VMWare Workstation.
几乎可以肯定是问题所在。
这种共享存储永远无法正常工作。1 它与 Git 的配合特别糟糕,它坚持完全、完全、100% 控制其.git
个目录。以这种方式使用 Git 有两个经验法则:
- 不要这样做。
- 如果必须这样做,请确保至少从一侧以 100% 只读方式进行。
因为 Git 已经有 自己的 共享协议,设置 VMWare 或 VirtualBox 系统非常容易,这样主机和客户端就只是两台不同的机器,有两个不同的 Git 存储库,它们使用 git push
and/or git pull
在它们之间传输对象。这样每个 Git 都可以完全、完整、100% 地控制自己的 .git
和相应的工作树,并且 确实 工作正常。
什么,从来没有?
嗯,几乎没有!
我正在我的 win 10 工作站和 VMWare Workstation 上的 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 拉取不会恢复文件。
我必须从字面上删除目录并再次克隆它才能取回文件。
我检查了 update_aws_list_rds 分支,在我再次克隆该目录后,我删除该目录之前消失的文件就在那里。
我正在使用 git 版本 2.17.1 和 VMware player 15。
这是怎么回事?我怎样才能阻止这个问题发生?
这个:
I am sharing my git directory (where I keep all my git repos) between my win 10 workstation and a Linux VM running on VMWare Workstation.
几乎可以肯定是问题所在。
这种共享存储永远无法正常工作。1 它与 Git 的配合特别糟糕,它坚持完全、完全、100% 控制其.git
个目录。以这种方式使用 Git 有两个经验法则:
- 不要这样做。
- 如果必须这样做,请确保至少从一侧以 100% 只读方式进行。
因为 Git 已经有 自己的 共享协议,设置 VMWare 或 VirtualBox 系统非常容易,这样主机和客户端就只是两台不同的机器,有两个不同的 Git 存储库,它们使用 git push
and/or git pull
在它们之间传输对象。这样每个 Git 都可以完全、完整、100% 地控制自己的 .git
和相应的工作树,并且 确实 工作正常。
什么,从来没有?
嗯,几乎没有!