如何使用 GitFlow 工作流进行团队协作
# 如何使用 GitFlow 工作流进行团队协作
以博客项目为例,记录一下应用 GitFlow 工作流进行团队协作的主要步骤和命令。
# 初始化项目
首先创建项目,并创建一个 develop
分支,以后更多操作是在 develop
分支上进行的:
# 创建项目
mkdir blog && cd blog
# 初始化 Git 版本库
git init
# 添加远程版本库
git remote add origin https://github.com/[your-github-id]/blog.git
# 新建 develop 分支并切换
git checkout -b develop
# 初始化项目
echo '# 个人博客' > README.md
# 创建 .gitignore 文件,用于忽略一些临时文件或自动编译生成文件
touch .gitignore
# ...
git add .
git commit -m "init repo"
# 推送到远程开发分支
git push -u origin develop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 功能开发
我和小明开始独立开发自己的功能。比如,我开发角色模块
,小明开发文章模块
。我们都新建自己的功能分支,独立开发、独立测试,互不干扰。
# (我)克隆版本库
git clone https://github.com/[your-github-id]/blog.git
# (我)切换到 develop 分支
git checkout develop
# (我)创建功能分支,功能分支是从开发分支分叉出去的
git checkout -b feature/role
# (我)现在可以愉快地开发新功能了
....
# (我)将分支推送到远程版本库
git push origin feature/role
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 代码 Review 和合并
现在,我已经完成角色模块,而且基本功能也通过了测试,是时候合并到开发分支了。我发起了 Pull Request,接受群众 Review。项目负责人可以接收 Pull Request 并将分支合并到开发分支。
当然 Pull Request 只是一个可选的步骤,你可以直接将分支合并到开发分支。
# 发布分支
现在角色模块和文章模块都开发完毕了,项目负责人小甲掐指一算,发布新版本吉时已到,假设是 v0.1.0,从开发分支中拉取出一个发布分支:
# 保持是最新代码
git pull
git checkout develop
git checkout -b release/v0.1.0
git push -u origin release/v0.1.0
1
2
3
4
5
2
3
4
5
我们已经开始新的功能了,突然间测试报了个 bug,我得优先处理这个 bug:
# 但是(我)在切换分支时报了个错:
git checkout release/v0.1.0
error: Your local changes to the following files would be overwritten by checkout:
xxx.js
Please commit your changes or stash them before you switch branches.
Aborting
1
2
3
4
5
6
2
3
4
5
6
意思是,你的本地已经修改了一些文件,如果就这样 checkout
过去,将会被覆盖。你可以提交(commit
)你的变更,或者暂存(stash
)起来。因为我的代码写到一半,不能将没有意义的代码提交到版本库,所以只能使用后者:
# 推荐在暂存时添加描述信息,
git stash push -m "更改了 xx"
git checkout release/v0.1.0
# 修复完 bug 回到原来的功能分支
# 恢复暂存
git stash pop
1
2
3
4
5
6
7
2
3
4
5
6
7
# 合并发布分支
发布分支在经过几次迭代之后,稳定性已经足以合并到 master 了:
# 切换到 master 分支
git checkout master
# 合并分支
git merge release/v0.1.0
# 打个 tag
git tag -a v0.1.0 -m "v0.1.0: 包含了角色模块和文章模块等功能更新"
# 推送版本库
git push
# 推送 tags
git push --tags
# 切换到开发分支
git checkout develop
git merge release/v0.1.0
git push
# 删除发布分支
git branch -d release/v0.1.0
# 删除远程发布分支
git push -d release/v0.1.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 修复 bug
客户报了一个生产版本的 bug,这 bug 影响使用,我们必须马上修复这个 bug 并发个版:
# 切换到 master 分支
git checkout master
# 创建 bug 修复分支
git checkout -b bug/B20220212
# 修复 bug 并提交
git commit -m "紧急修复xxxbug"
# 合并到 master
git checkout master
git merge bug/B20220212
git tag -a v0.1.1 -m "紧急修复xxxbug"
git push
# 合并到开发分支,因为开发分支同样有这个 bug
git checkout develop
git merge bug/B20220212
git push
# 删除 bug 分支
git branch -d bug/B20220212
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(完)