git 状态不能与 Virtualbox 共享文件夹一起正常工作
git status does not work properly with Virtualbox Shared Folders
详情
- 主机:macOS Sierra
- 客户机:Ubuntu 64 位 16.04 LTS
- Virtualbox: 5.1.14
在主机上,存储库目前只是本地的。已初始化并有多个 [本地] 提交,而没有一次推送到远程。
症状
在我的主机上,我有 parent
文件夹,上面有一个 Git 存储库。
我已经与来宾计算机共享 parent
文件夹,在 VM 上登录后该文件夹位于 /media/sf_parent
.
目前,我在终端中 cd /media/sf_parent
内容似乎已正确共享。
但是当我更改到 repo
文件夹时,我尝试执行 git status
并且输出是因为存储库中的所有单个文件都被跟踪但被修改。
奇怪的是 git log
提供了我在主机上所做的最后一次提交。
我尝试将存储库文件夹的 "versions" 与 ls
进行视觉比较,它们 "update date" 和 "file size" 的值相同,但 "owner" 的值不同,"group" 和 "permissions".
可能是什么问题?
也许 Virtualbox 不支持这个?
可能是文件系统级别与 "owner" 和 "permissions" 的冲突?
linux 用户管理是你的问题。您的虚拟机不知道 what/who group/users 来自您的主机和 vice/versa。可以通过为用户帐户使用单独的身份验证服务器来解决这个问题,但这个答案超出了 Whosebug 的范围。
一种 git
解决此问题的方法是在共享文件夹上托管一个裸存储库,然后在本地克隆到 VM。 push/pull 根据需要进行更改
来自主机
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
)
在 git config I was able to resolve this problem as I suspected and @g19fanatic 的帮助下提示这个问题似乎与 "user permissions" 有关。
在阅读了页面上的大量属性后,我测试了这两个:
git config core.filemode false
git config core.ignorecase false
PS:默认都是true
。
重新启动 VM,它工作正常,现在工作树在主机和来宾之间同步。
刷新缓存到磁盘解决了我的问题:
echo 3 > /proc/sys/vm/drop_caches
详情
- 主机:macOS Sierra
- 客户机:Ubuntu 64 位 16.04 LTS
- Virtualbox: 5.1.14
在主机上,存储库目前只是本地的。已初始化并有多个 [本地] 提交,而没有一次推送到远程。
症状
在我的主机上,我有 parent
文件夹,上面有一个 Git 存储库。
我已经与来宾计算机共享 parent
文件夹,在 VM 上登录后该文件夹位于 /media/sf_parent
.
目前,我在终端中 cd /media/sf_parent
内容似乎已正确共享。
但是当我更改到 repo
文件夹时,我尝试执行 git status
并且输出是因为存储库中的所有单个文件都被跟踪但被修改。
奇怪的是 git log
提供了我在主机上所做的最后一次提交。
我尝试将存储库文件夹的 "versions" 与 ls
进行视觉比较,它们 "update date" 和 "file size" 的值相同,但 "owner" 的值不同,"group" 和 "permissions".
可能是什么问题?
也许 Virtualbox 不支持这个?
可能是文件系统级别与 "owner" 和 "permissions" 的冲突?
linux 用户管理是你的问题。您的虚拟机不知道 what/who group/users 来自您的主机和 vice/versa。可以通过为用户帐户使用单独的身份验证服务器来解决这个问题,但这个答案超出了 Whosebug 的范围。
一种 git
解决此问题的方法是在共享文件夹上托管一个裸存储库,然后在本地克隆到 VM。 push/pull 根据需要进行更改
来自主机
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
)
在 git config I was able to resolve this problem as I suspected and @g19fanatic 的帮助下提示这个问题似乎与 "user permissions" 有关。
在阅读了页面上的大量属性后,我测试了这两个:
git config core.filemode false
git config core.ignorecase false
PS:默认都是true
。
重新启动 VM,它工作正常,现在工作树在主机和来宾之间同步。
刷新缓存到磁盘解决了我的问题:
echo 3 > /proc/sys/vm/drop_caches