git 单人开发一时爽,多人冲突火葬场。多人协同开发,该怎么去实现代码而不互相影响呢?下面需要了解一些简单概念:
代码仓库:我们有远端、本地仓库。我们需要事实保证本地代码与远端代码保持一致。
项目环境:我们有生产环境、测试环境。
分支:我们有 主分支 master ,开发分支 dev,其它分支(测试分支,其他人开发分支等)。图0我们可以看到远程分支没有双箭头,而本地分支,因为远程分支一般不相互影响,我们通过本地分支去操控。
当有一个任务需求
1、创建需求分支: 我们在master开一个需求分支,我们从主分支拉取出一个开发分支 dev,此时远程master与远程dev仓库代码一致,如图1。随后我们需要在本地输入git pull 命令拉取远程仓库(如图2),然后切换至本地dev分支开发,dev分支也就和远程dev代码一致(也就是master一致),我们在dev分支上代码上开发。
注意: 拉取master分支前不要忘记先 git pull 先拉取master代码 保证master代码是最新的。 不做后果:别人开发的代码可能会被弄丢失。
2、推送本地代码: 在dev分支上开发完成后,这些代码只在本地的dev分支,输入git push 将代码传入至远程dev仓库,如图3,此时远端dev仓库与本地dev代码保持一致。
3、合并至测试分支测试功能:测试分支一般是团队拿来一起测试使用的,当需求完成时,我们需要将开发分支代码合并至测试分支测试,切换至测试分支 git checkout ceshi(图4),先拉取代码 git pull (图5)(为什么要拉取代码?这里日常分支是大家一起使用的,别人可能将代码合并到了远端的测试分支,而你在开发分支可能和远程测试分支不一致),我们需要将我们的代码合并过来,git merge dev (这里dev是你的开发分支 图6),这里合并可能会出现冲突,原因是多个人改了同一个文件,就会引起冲突,终端出现 conflict 就是需要解决冲突的文件,解决好后,git push (图7)将代码上传至远程测试分支,这是远程测试分支就有了你的开发分支的代码。
4、测试无误,合并master:git checkout master 切换至master分支,首先git pull拉取远端master仓库最新代码(和图5一致)
一般情况下:拉取代码后切换回本地开发dev分支 git checkout dev, 然后合并本地master分支 git merge master,当然这里也可能会产生冲突,如果出现我们就需要手动解决,再将代码推送至远程dev分支,然后将远程分支发布至生产,将生产版本号改成该远程dev分支。(图8)
当然,这里也可能是:将dev代码合并到master分支 git merge dev(可能出现冲突),解决好将代码推送至远程master 仓库 git push,再将master重新发布即。(该情况比较危险,会污染master分支代码,一旦出现事故,将会造成较大影响,上者可通过改版本好控制生产代码)(图9)