Git开发流程最佳实践
写在前面
本文不多讲解Git命令的使用,旨在说明开发团队中如何使用git进行团队协作,release实践,如何进行hotfix等。这里推荐没用使用过Git的朋友参考廖雪峰老师的教程:
GIT 工作流程概览
孔子曰:一图顶十言。下图概括了Git核心的工作流程,开发feature,修改bug,hotfix。
远程master分支
始终保存的是最近一次上线PROD的代码
远程develop分支
始终保存的是最新提交的代码
编写feature,修改bug流程
- 基于本地develop分支创建本地分支,命名规则
feature/<task-number>-short-description
,bug/<task-number>-short-description
- 编写业务代码
- push本地分支到远程仓库
- 创建pull request到远程分支develop
- 经过code review并且approve之后,feature或bug分支被merge到远程分支develop
- 通过QA测试
- 远程develop分支会被发布到PROD环境正式上线
- 上线后创建pull request,远程develop分支会merge到远程master分支
上述过程中,本地git操作使用的部分命令
git checkout -b feature/<task-number>-short-description git checkout -b bug/<task-number>-short-description git push origin feature/<task-number>-short-description git push origin bug/<task-number>-short-description
创建pull request通常是通过git代码网站进行操作。
hotfix流程
- 基于本地master分支创建本地分支,命名规则
hotfix/<task-number>-short-description
- 编写业务代码
- push本地分支到远程仓库
- 创建pull request到远程分支master
- 经过code review并且approve之后,hotfix分支被merge到远程分支master
- 通过QA测试
- 远程master分支会被发布到PROD环境正式上线
- 上线后,远程develop需要同步远程master分支的改动
git命令拾遗
clone远程仓库中某一个具体分支
git clone <url> --branch <branch name> --single-branch [folder]
只clone master分支到当前路径(省略了folder):
git clone https://xxx.com/common.git --branch master --single-branch
此时使用git branch -r
可以看到远程分支:
origin/HEAD -> origin/master origin/master
说明我们只clone了master分支到本地仓库。
origin
当git clone命令执行完成后,origin就存放了远程仓库地址。在命令中使用origin,就指代远程仓库。
查看本地分支对应的远程分支
git branch -vv
基于远程分支创建本地分支
通过这种方式创建的本地分支,自动把该远程分支设置为本地分支的upstream,如此一来,git pull
,git push
操作时不再需要指明远程分支。
git checkout -b <local-branch-name> --track origin/<remote-branch-name>
设置本地分支的远程upstream分支
方式一:--set-upstream-to
使用git checkout -b <branch-name>
创建的本地分支,可以显式指定其对应的远程分支。
git branch --set-upstream-to origin/<remote-branch-name>
方式二:git push -u
在push本地分支到远程仓库时,顺便指定本地分支的upstream分支。
git push -u origin <local-branch-name>
branch-name可以省略,默认为当前分支。
相关推荐
formula 2020-11-12
huhongfei 2020-11-05
乾坤一碼農 2020-10-27
liumengyanysu 2020-10-22
E哥的aws认证攻略 2020-10-15
guying 2020-10-05
好脑筋不如烂笔头 2020-09-17
baolen 2020-08-15
Equation 2020-08-09
Balmunc 2020-08-02
fenggou 2020-07-18
zhangxing 2020-07-05
loganwz 2020-07-05
tianyafengxin 2020-10-08
nebulali 2020-09-11