zoukankan      html  css  js  c++  java
  • 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

    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的merge功能
    linux实用命令
    记录maven的一些命令
    java模拟报文
    spring boot利用swagger和spring doc生成在线和离线文档
    java将类和函数封装成jar
    spring cloud微服务搭建(一)
    linux根目录扩容
    快速上手UIView动画
    PHP变量
  • 原文地址:https://www.cnblogs.com/restran/p/2267794.html
Copyright © 2011-2022 走看看