git 开发功能分支标准流程
我的流程
1. 要从Github下载一个项目,需要用到clone命令。
git clone xxxxxxx.git
2. 创建并切换到新建的分支
git checkout -b feature-A develop
然后可以在新的分支上愉快的写代码开发新功能了,开发测试完毕后:
3. 用add命令来添加新写的代码,commit命令用来提交新写的代码
git add feature-A
git commit -m "add feature A"
4. add命令执行后,修改被保存到暂存区。可以理解为你操作本地文件按了下ctrl + s
接下来,不可以直接用到merge命令,合并feature-A分到develop去,如果这样做,很可能出现冲突。因为可能出现有很多人在develop分支上更新。所以你这个时候用pull命令,把远程仓库的更新取回并更新。
git checkout develop
git pull origin develop
5. 然后再切换回自己的分支,用rebase命令合并新更新到自己目前工作的分支。
git checkout feature-A
git rebase develop
一般情况下rebase都是会有冲突的,详细查看冲突可以用命令git status
然后就会显示哪个文件有冲突,然后打开有冲突的哪个文件,会发现有一些“<<<<<<<”, “=======”, “>>>>>>>” 这样的符号。
“<<<<<<<” 表示冲突代码开始
“=======” 表示test与master冲突代码分隔符
“>>>>>>>" 表示冲突代码的结束
<<<<<<<
所以这一块区域test的代码
=======
这一块区域master的代码
>>>>>>>
rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令
git add -u
git rebase --continue
继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来。
所以rebase的工作流就是
git rebase
while(存在冲突) {
git status
找到当前冲突文件,编辑解决冲突
git add -u
git rebase --continue
if( git rebase --abort )
break;
}
最后冲突全部解决,rebase成功!!
6. 合并分支git merge --no-ff feature-A 到develop
git checkout develop
git pull
git merge --no-ff feature-A
7. 更新到gitlab
git push origin develop
引用部分
项目中长期存在的两个分支
-
master
:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。 -
develop
:开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都从该分支创建。
其它分支为短期分支,其完成功能开发之后需要删除
-
feature/*
:特性(功能)分支,用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支,之后删除该分支。 -
bugfix/*
:bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。 -
release/*
:发布分支,用于代码上线准备,该分支从develop分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支。 -
hotfix/*
:紧急bug修复分支,该分支只有在紧急情况下使用,从master分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分支。