【问题标题】:Git repository in OneDrive synced folderOneDrive 同步文件夹中的 Git 存储库
【发布时间】:2014-11-02 07:34:23
【问题描述】:

我正在尝试在 OneDrive 同步文件夹中创建一个 git 存储库,但我遇到了问题。

我使用 OneDrive 通过“云”在我的多个设备之间同步文件夹。在我的开发机器(Win 7 64)上,OneDrive 文件夹位于 C:\Users\myusername\OneDrive 下。

我在该目录中创建了一个 \git 子文件夹,并在该文件夹中为我的代码 (foo.git) 创建了一个 git 存储库。

在同一台机器上,我可以将该存储库克隆到另一个未与 OneDrive 同步的文件夹,然后推送和拉取更改。

但是在我的另一台机器(Win 8.1 64)上,它也与 OneDrive 同步,当我尝试克隆存储库时(看起来一切都在 C:\Users\myusername\OneDrive\git\foo.git 下),我收到“这不是有效的 git 存储库”错误。

两台机器之间的 \git 文件夹内容“应该”相同,因为它们已同步。我唯一能想到的是,我的 git 存储库中可能有一些隐藏的文件夹/文件没有同步。 OneDrive 应该用于同步所有内容,包括隐藏文件和文件夹(据我所知)。

远程 git 存储库中是否有隐藏文件夹或文件?

我不确定为什么这不起作用,我读过其他人使用 OneDrive 来存储 git 远程存储库而没有问题。也许是一台机器是 Win 7 而另一台机器是 Win 8.1 的问题?

由于我已经用尽了我的谷歌搜索来寻找解决方案,对于我可能做错的事情,有人有任何建议或见解吗?

【问题讨论】:

  • 试试这个blog,它适用于SVN。对 GIT 也应该是一样的。
  • 我也有类似的问题。 Onedrive 显示合并错误,并不断在 .git 目录中创建 FETCH_HEAD 文件的副本,并将我的 PC 名称附加到名称中。这似乎是一个无限循环。有没有办法解决这个问题,或者我必须写一个洗澡脚本来清除这些重复项?
  • @VinShahrdar 我有同样的问题。我认为原因是当您运行git fetch 时,Git 会非常快速地多次更新文件(每个新/更新的分支一次?),以便 OneDrive 开始同步它,但在上传到云之前它会被覆盖, OneDrive 将其视为冲突。这是错误的,但事实就是如此。幸运的是,它看起来是无害的:冲突副本只是过时了,您可以忽略它们,或删除它们。

标签: git onedrive


【解决方案1】:

OneDrive 同步客户端现在支持同步其中包含句点字符“.”的文件夹。这应该使您能够开始自动同步这些 git 存储库,只要它们位于您的 OneDrive 文件夹中。

获取最新版本的OneDrive Client,一切就绪。

【讨论】:

  • 您知道这是否也适用于 Windows 10 中的消费版 OneDrive?我还没有更新,你的链接在我的 8.1 机器上安装了 OneDrive for Business 客户端。
  • 现在也可以在 OneDrive for Business 中使用,但仅限 Windows,Mac(15.3.0 beta)仍然无法同步,“文件夹路径包含无效字符或不支持的扩展名”。
【解决方案2】:

OneDrive 不(目前!)支持同步以句点开头的文件,例如 git 元数据保存到的 .git 文件夹。

因此,您看不到这些项目通过 OneDrive 同步。

(这仅适用于旧版本的 OneDrive 客户端,我创建了一个反映当前版本功能 8/2015 的新答案)

【讨论】:

  • 在本地 git 存储库中,我肯定会看到一个 .git 文件夹,但是您在远程 git 存储库中所说的那个文件夹在哪里(没有看到它)。
  • 如果你查看OneDrive.live.com,你将看不到包含所有分支/远程/提交历史细节的 .git 文件夹
  • 每当我启动 Git Shell 时,OneDrive 都会拒绝同步(即使在一天之后)。如果我关闭 Git Shell 并关闭 OneDrive,然后重新加载 OneDrive,它会同步。任何想法为什么?这有关系吗?
【解决方案3】:

截至 2017 年 6 月 27 日,版本 2016(内部版本 17.3.6917.0607)

OneDrive for business 将支持同步点文件(和点目录) 但是,除非您添加提交挂钩以排除文件,否则 OneDrive 是一个非常糟糕的解决方案: https://support.microsoft.com/en-us/help/3125202/restrictions-and-limitations-when-you-sync-files-and-folders

另外,我不知道在比赛条件下事情会如何表现。如果有多个提交者(包括自动化的东西),它可能不安全。

【讨论】:

    【解决方案4】:

    手动创建名为“.git”的文件夹有效,并且“.git”出现在onedrive服务器上。

    【讨论】:

      【解决方案5】:

      到目前为止,从 office.com 手动同步并耐心合并任何冲突都对我有用。下一个测试将是查看它的日常表现。我知道 oneDrive 不是一个理想的解决方案,但有时出于隐私考虑,它是一种获得类似 GitHub 的功能以在工作区之间来回传递文件​​的简单方法。

      【讨论】:

        【解决方案6】:

        我没有回答这个问题,因为我相信没有一个直截了当的答案。但是用例是令人信服的。 假设我喜欢将我正在处理的所有项目保存在 OneDrive 同步文件夹中的项目文件夹中,并将所有 Office 魔法作为附加值。让我们假设它是一个网络项目。我会的

        OneDrive/Projects/
            Project A/
            Project B/
              Documentation/
                UserManuals/
              Backups/
                2020-09-16/
              SQL-queries/
              htdocs
                 .git
                 .gitignore
                 assets/css
                 index.php
              Research/
        

        在 Projekt B 中的文件夹中,我想同步除 htdocs(可能还有备份)文件夹之外的所有文件夹,因为它已经在 Git 服务器(BitBucket)的某种版本控制(git)下。对我来说,这是一件很常见的事情,我还没有想出一个令人满意的解决方案。当然,我可以将 htdocs 文件夹(和备份)移到 OneDrive 树之外的某个位置,但这会使布局变得脆弱,并且项目的最终确定和归档也不是一件容易的事。 我能想到的一种解决方案是将项目移到 OneDrive 之外,将要同步的内容添加到单独的文件夹中,然后将此文件夹作为符号链接添加到 OneDrive 文件夹结构中。

        【讨论】:

          【解决方案7】:

          我在使用 DropBox 和 OneDrive 时也遇到了同样的问题。

          文件夹完全同步并且其他客户端完全了解更改需要一些时间。 如果 something 丢失了 git 会按预期进行抱怨。

          手动强制双方同步即可解决。

          我怀疑它在 Windows 上实现(或使用)的方式会导致它。 Ubuntu 上的 Dropbox 没有显示这些问题。 (除非我非常着急,并期望 3 秒后在我的另一个盒子上完全同步 ;-))

          我放弃了 DB & OD 解决方案。 最后我决定在github上注册一个帐户。方便多了。

          在盒子上安装 GitLab 或 Gitblit(在 Win 上使用 Tomcat)之类的东西也有助于私有存储库。

          【讨论】:

          • 两台机器都在同一个网络上的一天,所以它们现在应该已经同步了,但是克隆仍然失败。自从通过 OneDrive 以来,我已经多次同步我的 OneNote 工作簿,一切似乎都井然有序。
          • 看起来,但遗憾的是它不是。 (至少在 Win 上没有)
          • 如果没有付费帐户,我无法在 GitHub 上创建私有存储库(我还不想共享我的代码)。这就是我尝试 OneDrive 方法的原因,因为我已经在使用 OneDrive,而且据说它可以工作。
          • 如何强制 OneDrive 文件夹同步?我没有看到那个选项。
          • 在盒子上设置 GitLab 之类的东西非常容易。它不完全是 github,但可以肯定地工作
          猜你喜欢
          • 2021-01-11
          • 1970-01-01
          • 2020-04-30
          • 2015-03-18
          • 1970-01-01
          • 1970-01-01
          • 2015-05-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多