双引导Linux&;Windows,尊重git工作流的最佳方式?

双引导Linux&;Windows,尊重git工作流的最佳方式?,linux,git,github,Linux,Git,Github,我有一台PC,在那里我同时安装了Linux和windows。我使用云服务,因此我可以访问这两个地方的重要文件,并同步它们 假设我创建了一个git存储库,并将其推送到windows上的GitHub。现在我突然觉得需要切换到我的Linux安装来做一些事情。我的云服务不同步.git文件夹,因为windows默认情况下它是隐藏的。(如果我同步,会不会导致操作系统之间出现问题?)。因此,即使我拥有与windows上相同的项目(具有完全相同的文件),Linux也不会自动识别当前项目的VCS设置 我在Linu

我有一台PC,在那里我同时安装了Linux和windows。我使用云服务,因此我可以访问这两个地方的重要文件,并同步它们

假设我创建了一个git存储库,并将其推送到windows上的GitHub。现在我突然觉得需要切换到我的Linux安装来做一些事情。我的云服务不同步
.git
文件夹,因为windows默认情况下它是隐藏的。(如果我同步,会不会导致操作系统之间出现问题?)。因此,即使我拥有与windows上相同的项目(具有完全相同的文件),Linux也不会自动识别当前项目的VCS设置

我在Linux I上找到了一个有点脏的解决方法

  • 初始化空代表:
    git init
  • 添加远程分支:
    git remote Add Project\u namehttps://github.com/Psychotechnopath/Project_name.git
  • 获取远程分支的内容
    git Fetch--all
  • 将磁头重置到远程主分支
    git Reset--hard Project\u name/master

  • 这是最好的方法(例如,尊重git工作流),还是有更优雅的方法?

    我在同一个文件系统上几乎成功地做到了这一点;在我的例子中,我从Linux安装了ntfs文件系统。有两件事你必须小心:

    • 不要使文件名在不区分大小写的文件系统上相同,但在区分大小写的文件系统上不同
    • 请特别注意您的行尾,您可能需要在这里的.gittattributes中做一些工作
    • 如果发现git bug,请经常推送

    如果您不介意使用世界上最慢的Linux系统,您也可以通过Windows Services for Linux(WSL)在Windows下运行Linux。(不是WSL2,那是容器)。在这种情况下,您可以通过/mnt/c/文件系统从linux访问您的windows repo。

    WSL2应该可以。区别在于WSL 2使用的是一个真正的Linux内核,而WSL 1则假装是一个Linux系统。如果您重视数据,则绝对不要使用基于云的同步服务来同步存储库。是否要解释原因?它们会逐个文件同步数据,如果您正在处理单字处理文档,这一点非常好。但是,Git存储库要求多个文件(对象和引用)同步以避免损坏。此外,其中一些服务会将删除的文件带回工作树,或者在工作树中做一些奇怪的事情。因此,从理论上讲,当您要同步完整的git存储库(包括.git文件夹)时,它应该可以正常工作?如果您使用完全静态的存储库,并使用带有适当选项的工具,如
    rsync
    ,就可以了。如我所述,如果使用基于云的同步服务,它们不会生成相同的副本,因为它们可以保留删除的文件等,并且不能保证相同的语义。它们也不能保证只在存储库处于静止状态时同步。