我在guest虚拟机上运行Linux的Windows主机上有一个虚拟机(Virtual Box)。 我在客户端上有一个git repo,其中文件共享设置为Samba,使其位于我的网络位置。 我从我的Windows主机上运行SourceTree作为我的git客户端,以影响VM上的repo。
问题是,每隔一段时间,我的访客上的git对象就会被破坏。我已经找到(并继续寻找)修复git repo后它被破坏的方法。我修好了,它有效。问题是修复程序会删除我未提交的更改,因此我每次都必须备份。
我的问题是,如果可能的话,我如何能够防止这些git对象的损坏?
应该注意: 我没有强制关闭VM。 我试过在Source-Tree中关闭自动刷新功能。 我知道我可以在每个工作会话结束时备份git文件,避免失去这样的进度但这很烦人。
我愿意接受任何建议。
答案 0 :(得分:1)
在同一个存储库中使用两个不同的git可执行文件(一个用于Windows,一个用于Linux)听起来不错。
Git在设计上是一个分布式VCS,因此您可以利用它。只需在Windows文件系统中有一个存储库的克隆,在Linux VM中就有一个。然后在您的Linux VM上有一个裸仓库(git init --bare
),您可以在那里推动您的工作并从其他仓库中获取工作。使用Windows主机中的ssh
推送更改,而不是samba。请注意,虽然可以在两个非裸存储库之间直接推送,但不建议这样做(例如,您不能推送到非裸存储库的当前分支)。
如果您有机会访问基于网络的git服务(GitHub,gogs,GitLab,......),您也可以使用它进行推拉。