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

参考了网上许多人的方法,现在总结下。

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

 

Windows 下 Dropbox + Git 构建分布式多人协作版本控制系统_第1张图片

 

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,然后点合并->本地合并

Windows 下 Dropbox + Git 构建分布式多人协作版本控制系统_第2张图片

 

Windows 下 Dropbox + Git 构建分布式多人协作版本控制系统_第3张图片



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中的代码同步过来了。

你可能感兴趣的:(windows)