💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# Git - 多人协同开发利器,团队协作流程规范与注意事项 独立开发与人少的时候协同开发,问题不大。人多了就容易出事。 一般开发会约定如下分支: > - master分支:线上分支,不允许随意提交修改,仅允许develop分支合并,仅管理员操作(一般是开发老大) > - develop分支:开发分支,不允许直接修改,但允许程序员发起pr(提交)合并至develop,用于检出(下载到本地)新`feature-名字`分支开发新功,也用于合并至master分支。 > - release分支:测试代码分支,不允许直接修改,但允许程序员发起pr合并至release,用于测试环境使用 > - `feature-名字`分支:程序员开发使用的功能分支,从develo上检出的开发分支 那么,正常开发流程: 譬如我要开发一个`登录功能` ``` <pre class="calibre10">``` <span class="token6">1.</span>首先,从develop上检出新分支`feature<span class="token1">-</span>login`分支至本地,开发 <span class="token6">2.</span>完成开发后,push至远程`feature<span class="token1">-</span>login` <span class="token6">3.</span>此时我们需要测试新增的登录功能,那么,我们应该发起一个marge request(pr)至release分支(上文所说的测试分支),开发老大(管理员)同意pr,即成功合并至release分支 <span class="token6">4.</span>然后走测试流程 <span class="token6">5.</span>测试通过后,准备上线,那么,需要从`feature<span class="token1">-</span>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:\\下键入: ``` <pre class="calibre10">``` git clone git@github<span class="token3">.</span>com<span class="token3">:</span>lichixxx<span class="token1">/</span>test<span class="token3">.</span>git ``` ``` > cd 到test名目录(目录名与github仓库名一致,即test) > 查看远程分支 git remote -v > 查看本地分支 git branch > 查看远程分支 git branch -r > 查看所有分支 git branch -a **3、提交到新dev分支** ``` <pre class="calibre10">``` <span class="token">//如果只是单纯的新建分支直接push origin master:dev </span> <span class="token">//创建并切换 相当于git branch newbranch 与 git checkout newbranch</span> git checkout <span class="token1">-</span>b dev <span class="token">//git branch 可知 * 指向dev 即切换到本地dev分支了</span> <span class="token">//然后就是添加功能 add commit push</span> 增删改查 <span class="token">//提交当前文件所有的文件到暂存区</span> git add <span class="token3">.</span> <span class="token">//提交到本地仓库</span> git commit <span class="token1">-</span> m <span class="token2">"提交说明"</span> <span class="token">//记得加上:后dev,否则就提交到默认的远程master分支了</span> git push origin dev<span class="token3">:</span>dev ``` ``` **4、提交到新dev分支** ``` <pre class="calibre10">``` git push origin dev<span class="token3">:</span>release ``` ``` ## **张三开发登录功能** 从dev检出开发项目 ``` <pre class="calibre10">``` <span class="token">//克隆 dev分支 并自定义目录名(默认与远程仓库同名 test 且本地分支默认为dev)</span> git clone <span class="token1">-</span>b dev git@github<span class="token3">.</span>com<span class="token3">:</span>lichihua<span class="token1">/</span>test<span class="token3">.</span>git devdir <span class="token">//或者 切换dev分支并pull 获取代码(存在.git时可使用此法)</span> git checkout dev git pull <span class="token">//创建feature-login分支并切换</span> git checkout <span class="token1">-</span>b feature<span class="token1">-</span>login <span class="token">//把新建的分支push到远端</span> git push origin feature<span class="token1">-</span>login<span class="token3">[</span><span class="token3">:</span>feature<span class="token1">-</span>login<span class="token3">]</span> <span class="token">//拉取远端分支(会报错提示当前分支没有跟踪信息 需要关联到远程)</span> git pull <span class="token">//关联到远程</span> git branch <span class="token1">--</span>set<span class="token1">-</span>upstream<span class="token1">-</span>to<span class="token1">=</span>origin<span class="token1">/</span>feature<span class="token1">-</span>login <span class="token">//再次pull</span> git pull ``` ``` 完成开发后,push至远程`feature-login` ``` <pre class="calibre10">``` git add <span class="token3">.</span> git commit <span class="token1">-</span>m <span class="token2">"xxx"</span> git push ``` ``` 合并至release分支 ``` <pre class="calibre10">``` git checkout <span class="token1">-</span>b release(新建并切换分支) git pull(拉去最新的代码) <span class="token6">2</span>、查看分支   git branch <span class="token1">-</span>a(查看所有分支:本地分支白色,当前分支绿色,远程分支红色) <span class="token6">3</span>、合并分支   git merge feature<span class="token1">-</span>login <span class="token6">4</span>、查看状态   git status(这里可以看到是否有冲突:conflict,或者修改:modify) <span class="token6">5</span>、有冲突,通过IDE<span class="token1">/</span>编辑器解决 <span class="token6">6</span>、解决后,提交至暂存区   git add <span class="token3">.</span> <span class="token6">7</span>、提交   git commit <span class="token1">-</span>m <span class="token2">"说点什么"</span> <span class="token6">8</span>、推送   git push(已提交的变动推送至远程) <span class="token6">9</span>、测试 ``` ``` 测试完成合并到dev(步骤同上) 最后合并到master(步骤同上,老大负责)