使用 Dropbox 和 git 没有冲突
Posted
技术标签:
【中文标题】使用 Dropbox 和 git 没有冲突【英文标题】:Using dropbox and git without conflitcts 【发布时间】:2011-09-11 11:19:46 【问题描述】:我正在与仅使用 Dropbox 作为版本控制和协作工具的人合作。我不打算改变他们的行为。另一方面,我是一个 git 上瘾者,并且想将它用于我的个人用途。
他们有没有在 Dropbox 中同步的 .git 目录?
谢谢
【问题讨论】:
这与编程无关,您是在寻求 Dropbox 技术支持。 如果您想要一个更好的解决方案,请在这里给我们一些帮助:dropboxforum.com/hc/communities/public/questions/… 【参考方案1】:根据 Dropbox 论坛中的this thread,您不能省略/排除文件夹。有Selective Sync,但这也不是你需要的。
所以目前最好的解决方案是手动同步,例如使用rsync(1)
:
-
在某处创建一个新文件夹
使用
rsync
将此文件夹与 Dropbox 中的文件夹同步。我建议为此编写一个脚本。
在这个新文件夹中添加一个 git repo
使用第二个 rsync 脚本更新 Dropbox 文件夹(在此处使用 --exclude .git
)
【讨论】:
【参考方案2】:我可以看到两个选项:
使用https://***.com/a/8603156/112019 中给出的提示,通过--git-dir 和--work-tree 将.git 存储库文件存储在外部位置(如~/gitdropbox/myproject.git)。为了简化使用,您还可以在您的保管箱同步文件夹中添加一个 .git 文件(不是目录),内容为“gitdir:/path/to/repo.git”,以便您可以正常使用 git .
使用 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 \;
【讨论】:
以上是关于使用 Dropbox 和 git 没有冲突的主要内容,如果未能解决你的问题,请参考以下文章
带有 git 的 Dropbox 类服务——没有 rsync 和 inotify