主流程
涉及分支
- master分支:主干分支,用于发布到生成环境,master分支上的commit源自于release分支和hotfix分支的合并,每个commit都应该有相应的tag。
- develop分支:主开发分支,feature分支和release分支都是基于该分支进行,所有开发经过code review后都会应用到该分支。
- feature分支:开发新功能使用的分支,它从develop分支切出,并最终将会合并到develop分支。feature分支的命名规范为:feature-YYYYMMDD-特性(以下划线分割),例:feature-20180701-xxx
- release分支:发布分支,当完成某个里程碑的开发时,需要发布版本。这是从develop分支切出release分支,进行发布。针对发布后接收到的反馈,在该release分支进行bugfix,当该分支稳定时,分别合并到master和develop分支,之后删除该release分支。release分支的命名规范为:release-版本号,例:release-1.0.0
- hotfix分支:针对线上版本进行bugfix,然后分别合并到master和develop分支,hotfix分支的命名规范为:hotfix-bug, 例:hotfix-table_height_fix
Git flow流程
开发新分支
建立新分支 - feature分支
git checkout develop // 切换到develop分支
git pull // 与远程分支同步develop
git checkout -b feature-20180701-xxx// 建立新分支,进行开发
将新分支推到远程
git checkout develop // 切换到develop分支
git pull // 与远程分支同步develop
git checkout feature-20180701-xxxx // 切换到你的开发分支
git rebase develop // 基于最新的develop分支进行代码合并,解决冲突
git push origin feature-20180701-xxx // 将你的分支推向远程
pull request
去gitlab发起一个针对develop分支的pull request
需了解:
- git rebase vs git merge ?
- 代码冲突如何解决 ?
- 如何发起一个pull request?
发布
建立release分支
git checkout develop // 切换到develop分支
git pull // 与远程分支同步develop
git checkout -b release-1.0.0 // 建立release分支
git push origin release-1.0.0 // 推向远程
基于Release分支进行bugfix
git checkout release-1.0.0 // 切换到release分支
git pull // 与远程同步release
git checkout -b release-1.0.0_bugfix // 基于release分支建立bugfix分支,进行开发
git push origin release-1.0.0_bugfix // 推向远程
pull request
去gitlab发起一个针对release分支的pull request
将release分支分别合并到master和develop,对master分支进行打tag
git branch -D release-1.0.0 // 删除该release分支
线上bugfix
同上,hotfix是基于master的。
将hotfix分别合并到master和develop,对master分支进行打tag
其他常见git操作
- 将n个commit合成一个commit,git rebase -i HEAD~n
- 将某个分支的某个commit放到另外一个分支上,git cherry-pick commitID
- 重命名commit,git commit --amend
工具
- bash-git-promot - An informative and fancy bash prompt for Git users
- source-tree - git client
Reference
- a successful git branching model: https://nvie.com/posts/a-succ...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。