前言:在我们日常项目开发过程中,往往leader会根据功能模块不同,来进行“任务划分”。每个人开发过程中会与其他人有依赖关系,也就是协同开发。
下面我将模拟一个项目需求,来实例化一下开发流程
我们使用github作为仓库
一、项目需求
那就以最常用的注册、登录、找回密码为例。小红负责注册模块、小绿负责登录模块、小蓝负责找回密码模块。
二、工作流描述
我们已有一个中心仓库(master),小红小绿小蓝三人分别fork一份到自己“远程仓库”。然后分别clone(克隆)到本地,在自己pc中和自己远程仓库中进行开发和提交操作。
此例子Master地址:
https://github.com/datura-lj/git-fork-demo
下面为Master原有的代码:
# git-fork-demo
描述:这是一个测试git fork工作流程的demo。
有小红、小绿、小蓝三人共同开发
===============================================================
这里是系统上原有的代码
===============================================================
1. 小绿进行自己开发
首先,将中心仓库Master的代码,fork到小绿自己的远程仓库中。在浏览器地址栏输入地址:
至此fork完成,在上图可看出,此代码已经在小绿的远程仓库中(包括分支和提交记录等等)。
其次,我们将远程代码clone到本地,然后做一些修改,Push回远程仓库。
$ git clone git@github.com:Datura900607/git-fork-demo.git
$ git status
$ git add --all
$ git commit -m "开发了一个功能"
$ git push origin master
然后,更改代码,并成功提交到小绿远程仓库,小绿就可以发送一个合并到Master上的请求。(Pull request或merge request),然后管理员同意即可。
三、依赖他人代码
场景一:小红直接拉去Mater的代码
创建一个上游远程仓库,将Master代码拉取到小红的本地。
$ git remote add upstream https://github.com/datura-lj/git-fork-demo.git
$ git pull upstream master
场景二:小红和小绿有依赖。但是小绿代码还没Pull request到Master。
方法一:
直接从小绿远程仓库拉取代码。
$ git pull https://github.com/xiaolv/datura-lj/git-fork-demo.git master
方法二:
给小红添加小绿的远程仓库
$ git remote add xiaolv https://github.com/xiaolv/datura-lj/git-fork-demo.git
$ pull xiaolv master
其他
1.理解ssh和https方式
描述:在我们将远程仓库clone到本地时,可选择两种方式。其一是ssh(通过设置ssh),其二https(通过账号密码方式,此处注意本例是github的账号和密码)