Windows 下 Dropbox + Git 构建分布式多人协作版本控制系统
2011-11-29 17:25
387 查看
参考了网上许多人的方法,现在总结下。
拥有Dropbox帐号,并安装客户端。
然后克隆一份存放到Dropbox下的Repos文件夹中。
如果路径名出现空格,如F:/New File/,需要加引号"F:/New File/"。MyProject.git其实是一个文件夹,也可以使用其它的命名方法。
创建一个远端repository,指向Dropbox下的Repos文件夹中的Myproject.git,这样就可以将变更push到这个远端的repository,以及从这个远端的repository pull变更了。
现在就可往这个远端repository push你的代码了。但是在Push之前,需要先提交代码。可以右键打开Git Gui,先点缓存改动,在点提交就可以了。这时数据并没有同步到远端的repository,也就是Dropbox中,只是提交到了本地的工作区中。这时需要点上传,或者在Git Bash中输入以下命令来push,master指的是主分支。执行完这一步就会发现Dropbox在上传文件了。
pull的方法有两种:
1)可以在本地的工作目录中右键打开Git Bash,输入以下命令
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中的代码同步过来了。
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 repositorygit 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中的代码同步过来了。
相关文章推荐
- Git(分布式版本控制系统)在Windows下的使用-将代码托管到开源中国(oschina)
- Git(分布式版本控制系统)在Windows下的使用-将代码托管到开源中国(oschina)
- Git 分布式版本控制系统(三)
- Git 远程仓库(分布式版本控制系统)
- 分布式版本控制系统Git(三):git使用总结以及常用命令
- [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit
- 分布式版本控制系统Git与项目托管平台Github相关概念、操作方法、开发流程与常用命令
- Git 分布式版本控制系统 基本命令行操作
- Git 打标签(分布式版本控制系统)
- 分布式版本控制系统Git学习资源收集汇总
- 分布式版本控制系统----GIT的使用(一)
- Git分布式版本控制系统 基本介绍
- Git 别名(分布式版本控制系统)
- 分布式版本控制系统Git(一):Git安装配置、基本命令
- git——分布式版本控制系统
- Git是一个分布式的版本控制系统 你明白了吗?不我不需要这样的解释
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
- 分布式版本控制系统Git------初涉Git
- 第1节-分布式版本控制系统git
- git分布式版本控制系统