git状态无法与Virtualbox共享文件夹一起正常工作 细节 主机:macOS Sierra 来宾计算机:Ubuntu 64位16.04 LTS Virtualbox:5.1.14
在主机上,存储库目前只是本地的。已初始化并有多个[local]提交,无需向远程推送 症状 在我的主机上,我有一个带有Git存储库的git状态无法与Virtualbox共享文件夹一起正常工作 细节 主机:macOS Sierra 来宾计算机:Ubuntu 64位16.04 LTS Virtualbox:5.1.14,git,macos,ubuntu,virtualbox,Git,Macos,Ubuntu,Virtualbox,在主机上,存储库目前只是本地的。已初始化并有多个[local]提交,无需向远程推送 症状 在我的主机上,我有一个带有Git存储库的父文件夹。 我已与来宾计算机共享了parent文件夹,登录VM后,该文件夹位于/media/sf\u parent中 在终端中,我确实cd/media/sf\u parent此时内容似乎已被正确共享。 但是当我切换到repo文件夹时,我尝试执行git status,结果是存储库中的所有单个文件都被跟踪但都被修改了 奇怪的是,git日志提供了我在主机上所做的最后一次提交
父文件夹。
我已与来宾计算机共享了parent
文件夹,登录VM后,该文件夹位于/media/sf\u parent
中
在终端中,我确实cd/media/sf\u parent
此时内容似乎已被正确共享。
但是当我切换到repo
文件夹时,我尝试执行git status
,结果是存储库中的所有单个文件都被跟踪但都被修改了
奇怪的是,git日志
提供了我在主机上所做的最后一次提交。
我试图用ls
直观地比较存储库文件夹的两个“版本”,它们的“更新日期”和“文件大小”的值相同,但“所有者”、“组”和“权限”的值不同
有什么问题吗
也许Virtualbox不支持这一点
可能是文件系统级别与“所有者”和“权限”冲突?linux用户管理是您的问题。您的vm不知道您的主机上的组/用户是什么/谁,反之亦然。可以通过为用户帐户使用单独的身份验证服务器来修复此问题,但该答案不适用于StackOverflow
解决这个问题的一个git
方法是在共享文件夹上托管一个裸存储库,并在本地克隆到VM。根据需要进行推/拉更改
来自主机
cd shared/folder
mkdir <repo name>.git #.git isn't really needed but is typical
cd <repo name>.git
git init --bare
cd <current repo location>
git remote add origin <path to repo.git folder>
git push --all
cd共享/文件夹
mkdir.git#。git不是真正需要的,而是典型的
cd.git
git init——裸
光盘
git远程添加源
git推——全部
来自虚拟机
cd ~
git clone <path to shared folder bare repo.git>
cd~
git克隆
确保在VM上设置用户名和电子邮件地址,以便将提交归因于正确的人(使用git config
)在我的帮助下,我能够解决这个问题,因为我怀疑并建议这个问题似乎与“用户权限”有关
在阅读了页面上的许多属性后,我测试了以下两个:
git config core.filemode false
git config core.ignorecase false
PS:默认情况下,它们都是true
重新启动虚拟机并使其工作,现在工作树在主机和来宾之间同步。刷新缓存到磁盘解决了我的问题:
echo 3 > /proc/sys/vm/drop_caches
如果已经在远程代码,我将不需要共享文件夹。。。但是你在第一行所说的与我的怀疑相符。谢谢。这似乎解决了我的共享git目录问题(在Windows和Linux之间),许多人都声称这是不可能的(比如)