使用Virtualbox共享文件夹时,git status无法正常工作

时间:2017-03-28 11:01:01

标签: git macos ubuntu virtualbox

详细

  • 主机:macOS Sierra
  • Guest Machine :Ubuntu 64bits 16.04 LTS
  • Virtualbox :5.1.14

在主机上,存储库目前只是本地的。初始化并有几个[本地]提交,没有一次推送到远程。

症状

在我的主机上,我有parent文件夹,上面有一个Git存储库。 我在guest虚拟机上共享了parent文件夹,登录VM后文件夹位于/media/sf_parent

在终端中我cd /media/sf_parent目前内容似乎已正确共享。 但是,当我更改为repo文件夹时,我尝试执行git status,输出就是跟踪存储库中的所有单个文件但已修改。

奇怪的是,git log提供了我在主机上做的最后一次提交。 我尝试在视觉上将存储库文件夹的“版本”与ls进行比较,它们与“更新日期”和“文件大小”的值相同,但对“所有者”,“组”和“权限”具有不同的值

可能是什么问题?

也许Virtualbox不支持这个?

可能是文件系统级别与“所有者”和“权限”的冲突?

3 个答案:

答案 0 :(得分:3)

git config的帮助下,我能够解决此问题,因为我怀疑并@g19fanatic建议此问题似乎与“用户权限”有关。

在阅读了页面上的很多属性后,我测试了这两个:

git config core.filemode false
git config core.ignorecase false

PS:默认为true

重新启动虚拟机并且工作正常,现在工作树在主机和来宾之间同步。

答案 1 :(得分:1)

将缓存刷新到磁盘解决了我的问题:

angY

答案 2 :(得分:0)

linux用户管理是你的问题。您的虚拟机不知道组/用户来自主机的是什么/用户,反之亦然。可以通过为用户帐户使用单独的身份验证服务器来修复,但该答案超出了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

来自vm

cd ~
git clone <path to shared folder bare repo.git>

确保在VM上设置用户名和电子邮件地址,以便将提交归因于正确的人(使用git config