一.综述
二.分布式版本控制GIT工作流
场景1:
oy需要在办公室(保密局域网)内多台机器上协作开发,还需要将代码和我们实验室邵孔东协作开发,但是邵孔东不能连接到oy办公室。
1.在办公室建立中央集中式git服务器(解决局域网内的代码协作开发)
2.oy与邵孔东使用本地或者SSH协议实现在实验室的代码协作开发
oy办公室为代码一级中心,oy代码向中心提交
oy来我们实验室之后,作为中心,邵孔东代码向oy代码库提交
邵孔东走如下操作:
oy在master分支上开发,此时可以新建一个host分支来专门用户和邵孔东合并用,这个host应该为邵孔东的upstream分支。
Solution:
OY:
git branch host
SKD:
git add . && git commit -m “local snapshot”
git remote add oy ssh://oy@oy_host_ip:related_to_oy_home/repo/.git
git fetch oy host (将远端的信息和数据拿回来,通过这条命令git才有了oy/host这个变量)(注意 不是 oy/host,远端交互都是两个参数,本地分支操作室用/连起来的一个参数)
git branch oy_host -t oy/host(建立本地分支跟踪刚拿回来的oy的主分支)
git checkout master
git merge oy_host(将那会儿来的分支与自己合并)
有冲突则解决冲突,没有冲突则做版本并提交到oy/host分支
git push oy master:host
或者
git remote add oy…
git fetch oy host
git checkout oy/host
git checkout -b oy_host
…
OY:
git checkout master
git merge host
oy的repo作为邵孔东的remote节点,当邵孔东要想oy的repo/.git的master分支 push的时候,oy的master复制必须不是checkout状态,也就是当前分支不能使master。解决方法有两种:
远端仓库为bare仓库,即只有.git的内容,没有workingtree
git checkout -b idel新建一个空闲分支,checkout出来,将master分支空闲出来。
比如以下:将本地的u_track_fei_master
再次提交成功
场景2:
oy的repo作为邵孔东的remote节点,当邵孔东要想oy的repo/.git的master分支 push的时候,oy的master复制必须不是checkout状态,也就是当前分支不能使master。解决方法有两种:
远端仓库为bare仓库,即只有.git的内容,没有workingtree
git checkout -b idel新建一个空闲分支,checkout出来,将master分支空闲出来。
Solution:
oy的repo作为邵孔东的remote节点,当邵孔东要想oy的repo/.git的master分支 push的时候,oy的master复制必须不是checkout状态,也就是当前分支不能使master。解决方法有两种:
远端仓库为bare仓库,即只有.git的内容,没有workingtree
git checkout -b idel新建一个空闲分支,checkout出来,将master分支空闲出来。