Git 版本化管理(从功能开发、发布到 bug 修复)
描述
Git
的使用已经越来越广泛了,Git
的好处这边也就不多说了,主要还是说一下使用向的东西,项目开发过程中也会遇到各种各样的问题,这边就把我遇到问题及解决的方式分享下
经典 Git
分支图
下面就这张图给大家说下 Git
中开发
->发布
->Bug 修复
的流程。
常规开发流程
我习惯使用
oh-my-zsh
去使用Git
,主要是因为他的git alias
可以连 git 关键字都缩写成g
。
- 首先你需要有一个开发分支(
dev
、develop
、develop.v1
),需要开发新功能的时候,从开发分支切一个新分支出来进行开发:1
2
3
4
5# 常规 bash
git checkout -b [branch]
# oh-my-zsh
gcb [branch] - 部分模块完成,将当前目录的所有文件添加到暂存区,准备提交
1
2
3
4
5# 常规 bash
git add .
# oh-my-zsh
ga . - 功能开发完成,提交到本地仓库(
commit message
的格式可以参考阮一峰的网络日志)如果是多人开发并且有代码
Review
的话,尽量养成模块开发,分步提交的好习惯,用以避免让代码 Review 的人一次看几千行代码。 - 提交到远程仓库
1
2
3
4
5# 常规 bash
git push [remote] [branch]
# oh-my-zsh
ggp - 提交到远程仓库
1
2
3
4
5# 常规 bash
git push [remote] [branch]
# zsh
ggp - 分支合并
1
2
3
4
5
6
7# 常规 bash
git checkout dev
git merge [function branch]
# oh-my-zsh
gco dev
gm [function branch] - 解决冲突(多人开发难以避免)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 1.拉dev 分支最新的代码
# 常规 bash
git checkout dev && git pull
# oh-my-zsh
gco dev && gl
# 2.切回自己的分支
# 常规 bash
git checkout [function branch]
# oh-my-zsh
gco [function branch]
# 3.本地合并
# 常规 bash
git merge dev
# oh-my-zsh
gm dev
# 4.解决冲突,选择最优解代码,两边代码都有问题的话就手动改正,提交。
发布流程
- 从 dev 分支切出一个新的 release 分支
1
2
3
4
5# 常规 bash
$ git checkout -b [release-X.X.X]
# oh-my-zsh
$ gcb [release-X.X.X] - 将
release-X.X.X
合并到master
分支1
2
3
4
5
6
7# 常规 bash
git checkout master
git merge [release branch]
# oh-my-zsh
gco master
gm [release branch] - 打
tag
进行版本更新,Makefile
示例(个人使用 standard-version)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21.PHONY: server build version
registry=example.registry.com
version=`git describe --tags`
server:
@hexo clean \
&& hexo g \
&& hexo s
version:
@echo "build new version..." \
&& standard-version \
&& git push --follow-tags origin master
deployment: version
@echo "build docker image for origin ..." \
&& hexo clean \
&& hexo g \
&& docker build -t $(registry)/allens-blog/blog:$(version) . \
&& sudo docker push $(registry)/allens-blog/blog:$(version)
Bug 修复流程
- 先从发布版本的
release
分支切一个fix
分支进行bug
修复1
2
3
4
5# 常规 bash
git checkout release-X.X.X && git pull && git checkout -b fix_release_somebug
# oh-my-zsh
gco release-X.X.X && gl && gcb fix_release_somebug - 添加代码到暂存区(同上)
- 提交到本地仓库(同上)
- 提交到远程仓库(同上)
- 代码合并到
release-X.X.X
- 测试 OK,将合并
cherry-pick
到master
- 别忘记将合并
cherry-pick
到dev
,不然下次从dev
切release
的时候Bug
又出现了 - 重新走一遍发布流程
Git 版本化管理(从功能开发、发布到 bug 修复)
https://agopher.com/2020/09/13/tech/2020-git/