【问题标题】:Using dropbox and git without conflitcts使用 Dropbox 和 git 没有冲突
【发布时间】:2011-09-11 11:19:46
【问题描述】:

我正在与仅使用 Dropbox 作为版本控制和协作工具的人合作。我不打算改变他们的行为。另一方面,我是一个 git 上瘾者,并且想将它用于我的个人用途。

他们有没有在 Dropbox 中同步的 .git 目录?

谢谢

【问题讨论】:

标签: git dropbox


【解决方案1】:

根据 Dropbox 论坛中的this thread,您不能省略/排除文件夹。有Selective Sync,但这也不是你需要的。

所以目前最好的解决方案是手动同步,例如使用rsync(1)

  1. 在某处创建一个新文件夹
  2. 使用 rsync 将此文件夹与 Dropbox 中的文件夹同步。我建议为此编写一个脚本。
  3. 在这个新文件夹中添加一个 git repo
  4. 使用第二个 rsync 脚本更新 Dropbox 文件夹(在此处使用 --exclude .git

【讨论】:

    【解决方案2】:

    我可以看到两个选项:

    1. 使用https://stackoverflow.com/a/8603156/112019 中给出的提示,通过--git-dir 和--work-tree 将.git 存储库文件存储在外部位置(如~/gitdropbox/myproject.git)。为了简化使用,您还可以在您的保管箱同步文件夹中添加一个 .git 文件(不是目录),内容为“gitdir:/path/to/repo.git”,以便您可以正常使用 git .

    2. 使用 Dylan R. 在https://forums.dropbox.com/topic.php?id=52360#post-387887 中描述的方法来忽略 .git 文件夹。然后,您在保管箱系统中保留一个空的 .git 文件夹,并使用选择性同步功能在本地忽略它,然后初始化存储库。请注意,当您通过选择性同步删除现有 .git 文件夹时,它会被 Dropbox 删除,因此如果您有想要保留的历史记录,请确保您有本地备份。

    【讨论】:

      【解决方案3】:

      选择性同步似乎是解决方案,但请注意:当您将文件夹标记为已排除时,Dropbox 会将其删除。

      只需备份您的 .git 文件夹,用Selective Sync 将其标记为已排除,Dropbox 将删除它。当您将文件夹复制回来时,Dropbox 不会再次删除它,并且它会缺少 Dropbox 同步标记(及其子文件夹)。

      【讨论】:

        【解决方案4】:

        2020 年更新:现在 Dropbox 具有标记要忽略的文件夹或文件的选项,如下所述:https://help.dropbox.com/files-folders/restore-delete/ignored-files

        attr -s com.dropbox.ignored -V 1 myfoldername
        

        【讨论】:

        • 是的!我可以证明这确实有效。 Dropbox 将立即忽略给定的文件/文件夹。它不会删除文件/文件夹,只是忽略它,这正是我们这些年来一直在等待的。如果他们能更进一步,添加类似.dropboxignore 这样会自动执行此操作的内容,那就更好了。
        【解决方案5】:

        我也遇到过同样的问题,正如sunew 已经提到的,您现在可以标记要忽略的文件或文件夹。我在 MacOS 上的 Dropbox 文件夹中使用以下 bash 脚本来查找 Dropbox 文件夹中的所有 .git 文件夹和父 node_modules 文件夹,并将它们标记为忽略:

        # for MacOS
        # exclude-files-dropbox.sh
        find . -type d -name "node_modules" -prune -exec xattr -w com.dropbox.ignored 1 {} \;
        find . -type d -name ".git" -prune -exec xattr -w com.dropbox.ignored 1 {} \;
        

        以下应该可以在 Linux 上运行:

        # for Linux
        # exclude-files-dropbox.sh
        find . -type d -name "node_modules" -prune -exec attr -s com.dropbox.ignored -V 1 {} \;
        find . -type d -name ".git" -prune -exec attr -s com.dropbox.ignored -V 1 {} \;
        

        【讨论】:

          猜你喜欢
          • 2011-12-16
          • 1970-01-01
          • 1970-01-01
          • 2012-01-30
          • 1970-01-01
          • 2013-11-18
          • 2022-12-18
          • 2013-10-15
          • 1970-01-01
          相关资源
          最近更新 更多