您的位置:首页 > 运维架构

Windows 下 Dropbox + Git 构建分布式多人协作版本控制系统

2011-11-29 17:25 387 查看
参考了网上许多人的方法,现在总结下。

1. 前置条件

安装Git,Git的下载地址http://code.google.com/p/msysgit/downloads/list

拥有Dropbox帐号,并安装客户端。

2. 共享文件夹

在Dropbox中共享一个文件夹给好友,如Repos,用来放远程的Git repository,好友间通过共享该文件夹来达到repository同步的目的。

3. 在第1台设备中建立项目的repository

进入自己的项目的目录,如MyProject文件夹下,右键打开Git Bash,输入以下命令来初始化Git repository

git init


然后克隆一份存放到Dropbox下的Repos文件夹中。

git clone --bare . F:/Dropbox/Repos/MyProject.git


如果路径名出现空格,如F:/New File/,需要加引号"F:/New File/"。MyProject.git其实是一个文件夹,也可以使用其它的命名方法。

创建一个远端repository,指向Dropbox下的Repos文件夹中的Myproject.git,这样就可以将变更push到这个远端的repository,以及从这个远端的repository pull变更了。

git remote add MyProject F:/Dropbox/Repos/MyProject.git


现在就可往这个远端repository push你的代码了。但是在Push之前,需要先提交代码。可以右键打开Git Gui,先点缓存改动,在点提交就可以了。这时数据并没有同步到远端的repository,也就是Dropbox中,只是提交到了本地的工作区中。这时需要点上传,或者在Git Bash中输入以下命令来push,master指的是主分支。执行完这一步就会发现Dropbox在上传文件了。

git push MyProject master




4. 在其它设备中建立项目的repository

在这台设备的Dropbox中应该可以看到共享的Repos文件夹。找一个工作目录,也就是你要存放项目代码的目录,然后右键打开Git Bash,输入以下命令,将repository克隆过来,这时会在当前文件夹下建立一个该项目的目录。这时可以看到,在第1台设备中的代码已经出现在该工作目录下了。在Git Gui中显示的远端repository的名字为origin。

git clone F:/Dropbox/Repos/MyProject.git


5. 其它注意事项

1. 当Dropbox同步Repos文件夹时,本地工作目录里的repository并没有自动同步,也就是说需要手动pull,也就是从远端的repository(Dropbox\Repos文件夹)pull到本地的工作目录中。

pull的方法有两种:

1)可以在本地的工作目录中右键打开Git Bash,输入以下命令

git pull MyProject master


2)在本地的工作目录中右键打开Git Gui,选择远端->从...获取(fetch)->MyProject,然后点合并->本地合并





2. 有时候如果设备A和B间同时push,且都变更了代码,Dropbox同步有时间差,可能会导致出现拷贝冲突。

也就是设备A里的代码,没有同步到设备B中,同样B中的代码也没有同步到A中。此时在设备A中pull时会出现fatal: Reference has invalid format: ...,fata: The remote end hung up unexpectedly,设备B可以正常pull,但是没有设备A中提交的代码。

这时只需要删除设备A中(无法pull的那台设备)Dropbox\Repos\MyProject.git\refs\heads中冲突的master文件(如果是主分支的话),然后再重新pull(此时已可以pull了),这时设备B中的代码就会同步到A中了。

然后再执行一次push(也就是Gui里的上传),将设备A因为冲突而没同步的代码同步到Dropbox中。

设备B等Dropbox同步后,再pull一次就可以将A中的代码同步过来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: