ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
独立开发与人少的时候协同开发,问题不大。人多了就容易出事。 一般开发会约定如下分支: > * master分支:线上分支,不允许随意提交修改,仅允许develop分支合并,仅管理员操作(一般是开发老大) > * develop分支:开发分支,不允许直接修改,但允许程序员发起pr(提交)合并至develop,用于检出(下载到本地)新`feature-名字`分支开发新功,也用于合并至master分支。 > * release分支:测试代码分支,不允许直接修改,但允许程序员发起pr合并至release,用于测试环境使用 > * `feature-名字`分支:程序员开发使用的功能分支,从develo上检出的开发分支 那么,正常开发流程: 譬如我要开发一个`登录功能` ~~~ 1.首先,从develop上检出新分支`feature-login`分支至本地,开发 2.完成开发后,push至远程`feature-login` 3.此时我们需要测试新增的登录功能,那么,我们应该发起一个marge request(pr)至release分支(上文所说的测试分支),开发老大(管理员)同意pr,即成功合并至release分支 4.然后走测试流程 5.测试通过后,准备上线,那么,需要从`feature-login`分支发起pr至develop分支,管理员审核后,由管理员操作develop分支,合并至master ~~~ #### 为什么不从`feature-login`分支直接pr(提交)至master分支? 原因: * 1.master分支为线上生产环境代码,不应该随意合并提交,合并前应审核代码; * 2.多人协同,极易出现代码冲突,故应约定所有人先合并代码至develop分支,解决冲突后再由develop合并至master。所有人从develop分支检出feature分支开发,保证了代码的一致性。 注意事项: * **release分支对应测试环境,绝不要将release分支合并至develop或master分支上** * release分支为测试分支,应于master、develop分离(测试/线上分离) * release分支上可以放任意测试代码,代码混乱,可能今天a程序员pr至release测试功能,下午b程序员也pr了新功能测试,但都不是今天上线的且需要测试的功能,然后c程序员直接将release分支合并至master分支,那么将会出现不可预估的bug,后果极其严重 * feature分支发布之前,可以先从develop拉去代码至本地的feature分支,以解决冲突,解决后push feature分支至远程,然后再请求合并至develop,管理员合并时将无需面临代码冲突问题。 * 代码合并至develop分支后,应删除远程端的feature分支。因已合并至develop,后续改动依旧需要从develop分支上检出代码(**因为其他人可能在此期间合并了新的功能至develop分支,此操作可保障代码一致性,极为关键**),原feature分支无任何存在的必要。 * 严格执行以上流程,Git将是多人协同开发利器 ## **前提** **1、创建自己的github仓库** 点击[New repository](https://github.com/new)创建自己的github仓库,命名为test **2、克隆项目** (自动生成了默认master分支以及orgin远程仓库别名) git定位到D:\\下键入: ~~~ git clone git@github.com:lichixxx/test.git ~~~ >[danger]cd 到test名目录(目录名与github仓库名一致,即test) 查看远程分支 git remote -v 查看本地分支 git branch 查看远程分支 git branch -r 查看所有分支 git branch -a **3、提交到新dev分支** ``` //如果只是单纯的新建分支直接push origin master:dev //创建并切换 相当于git branch newbranch 与 git checkout newbranch git checkout -b dev //git branch 可知 * 指向dev 即切换到本地dev分支了 //然后就是添加功能 add commit push 增删改查 //提交当前文件所有的文件到暂存区 git add . //提交到本地仓库 git commit - m "提交说明" //记得加上:后dev,否则就提交到默认的远程master分支了 git push origin dev:dev ``` **4、提交到新dev分支** ``` git push origin dev:release ``` ## **张三开发登录功能** 从dev检出开发项目 ~~~ //克隆 dev分支 并自定义目录名(默认与远程仓库同名 test 且本地分支默认为dev) git clone -b dev git@github.com:lichihua/test.git devdir //或者 切换dev分支并pull 获取代码(存在.git时可使用此法) git checkout dev git pull //创建feature-login分支并切换 git checkout -b feature-login //把新建的分支push到远端 git push origin feature-login[:feature-login] //拉取远端分支(会报错提示当前分支没有跟踪信息 需要关联到远程) git pull //关联到远程 git branch --set-upstream-to=origin/feature-login //再次pull git pull ~~~ 完成开发后,push至远程`feature-login` ``` git add . git commit -m "xxx" git push ``` 合并至release分支 ``` git checkout -b release(新建并切换分支) git pull(拉去最新的代码) 2、查看分支   git branch -a(查看所有分支:本地分支白色,当前分支绿色,远程分支红色) 3、合并分支   git merge feature-login 4、查看状态   git status(这里可以看到是否有冲突:conflict,或者修改:modify) 5、有冲突,通过IDE/编辑器解决 6、解决后,提交至暂存区   git add . 7、提交   git commit -m "说点什么" 8、推送   git push(已提交的变动推送至远程) 9、测试 ``` 测试完成合并到dev(步骤同上) 最后合并到master(步骤同上,老大负责)