Git和Dropbox可以一起使用吗?
当前回答
我不认为使用Git和Dropbox是正确的选择……想想两者的特点:
Git:
允许您拥有一个中央存储库 允许您使用自己的更改拥有自己的存储库 允许您从中央存储库发送和接收更改 允许多人更改相同的文件,他们合并他们或要求你合并他们,如果它不能这样做 web和桌面客户端是否允许访问中央存储库
Dropbox:
将所有内容保存在中央存储库中 允许您在服务器中拥有自己的文件版本 强制您从中央存储库发送和接收更改 如果多人更改相同的文件,第一个提交的文件将被稍后提交的文件所取代,并且不会发生合并,这很麻烦(这肯定是它最大的缺点) 具有web和桌面客户端以允许访问中央存储库。
如果你担心泄露你的文件,为什么不加密呢?然后你就可以得到Dropbox to Git的最大优势,那就是拥有公共和私人文件……
其他回答
我们在共享文件夹上使用这种方法(在Dropbox中创建一个裸存储库)。
一小组开发人员可以从这个完全同步的存储库中提取数据,并创建一个本地克隆。一旦单位的功完成了,我们就回到原点。
我缺少的一件事是,在推送到原点时发送带有更改集信息的电子邮件的好方法。我们使用谷歌Wave来手动跟踪更改。
这个答案是基于Mercurial的经验,而不是Git,但这个经验告诉我们,如果你在不同的时间从不同的机器(对我来说是Mac、Unix和Windows)更新相同的基于Dropbox的存储库,那么以这种方式使用Dropbox会导致存储库损坏。
I don't have a complete list of the things that can go wrong, but here's a specific example that bit me. Each machine has its own notion of line-ending characters and how upper/lower case characters are handled in file names. Dropbox and Git/Mercurial handle this slightly differently (I don't recall the exact differences). If Dropbox updates the repository behind Git/Mercurial's back, presto, broken repository. This happens immediately and invisibly, so you don't even know your repository is broken until you try to recover something from it.
在用这种方法解决了一次混乱之后,我一直在使用下面的食谱,而且非常成功,没有任何问题的迹象。只需将存储库移出Dropbox。其他事情都用Dropbox;文档,JAR文件,任何你喜欢的东西。并使用GitHub (Git)或Bitbucket (Mercurial)来管理存储库本身。这两种工具都是免费的,所以不会增加成本,而且现在每种工具都发挥了自己的优势。
在Dropbox上运行Git/Mercurial除了风险什么都不会增加。不要这样做。
在不使用第三方集成工具的情况下,我可以稍微改善一下条件,并使用DropBox和其他类似的云磁盘服务,如带Git的SpiderOak。
我们的目标是避免在这些文件修改的中间同步,因为它可以上传一个部分状态,然后下载回来,完全破坏你的git状态。
为了避免这个问题,我做了:
使用git Bundle create my_repo将我的git索引捆绑在一个文件中。git——所有。 为文件监控设置一个延迟,例如5分钟,而不是瞬间。这降低了DropBox在更改过程中同步部分状态的机会。它在动态修改云磁盘上的文件时也有很大帮助(比如即时保存笔记应用程序)。
它并不完美,因为不能保证它不会再次弄乱git状态,但它有帮助,目前我没有遇到任何问题。
现在是2015年,就在三天前,一个基于Dropbox API v2的新工具已经被创建出来,可以安全地在Dropbox上使用git。它针对API工作,而不是使用桌面客户端,并正确地处理多个同时推送到共享文件夹中托管的存储库。
一旦配置,它允许设置一个完全像其他git远程一样的git远程。
git clone "dropbox::/path/to/repo"
git remote add origin "dropbox::/path/to/repo"
对于使用Dropbox的小型团队:
如果每个开发人员在Dropbox上都有自己的可写裸存储库,这只对其他开发人员开放,那么这就有利于代码共享而没有损坏的风险!
然后,如果你想要一个集中的“主线”,你可以让一个开发人员从自己的回购中管理所有推送。
推荐文章
- 如何将Git分支移到它自己的存储库中?
- 如何禁用Git凭证管理器的Windows?
- Git 拉取与 Git 变基
- 在git中压缩提交是什么意思?
- 在GIT中合并2个分支
- git标签也会被推送吗?
- 嵌套的Git存储库?
- Git bash错误:无法fork子进程:没有可用的终端(-1)
- 有没有办法在SourceTree中获得两个分支的视觉差异?
- Git标记是否只应用于当前分支?
- Git分支:master vs. origin/master vs. remotes/origin/master
- 如何根据文件扩展名过滤git差异?
- 如何设置一个git项目使用外部回购子模块?
- Git同时在两个分支上工作
- 如何在Visual Studio中删除未推送的外向提交?