「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
前言
这里说的普通合并 --no-ff
我们有三个主要的分支 master release dev,远程和本地都有
查看分支图的工具是 SourceTree
本文介绍两种种情况下分支操作
- 常规开发流程
- 你正开发呢,被拉去做另一个功能(线上bug/线上功能),你并不想提交现在的修改
常规开发流程
当前我们的版本是 1.0.0,接下来要迭代成 1.0.1
创建 feature/1.0.1 分支
查看当前分支,在 dev 上创建分支 feature/1.0.1
git branch
git switch -c feature/1.0.1
feature/1.0.1 提交功能
当我们在 feature/1.0.1 完成了我们的需求,进行提交
git add .
git commit -m "Add: 1.0.1"
dev 合并 feature/1.0.1
切换回 dev ,拉取远程 dev,普通合并 feature/1.0.1,推送到远程 dev
git switch dev
git pull
git merge feature/1.0.1 --no-ff -m "Add: 1.0.1"
git push
release 合并 dev
切换到 release ,拉取远程 release ,普通合并 dev ,推送到远程 release
git switch release
git pull
git merge feature/1.0.1 --no-ff -m "Add: 1.0.1"
git push
master 合并 release
切换到 master ,拉取远程 master ,普通合并 dev ,推送到远程 master
git switch master
git pull
git merge feature/1.0.1 --no-ff -m "Add: 1.0.1"
git push
SourceTree 图示
图示的是一个 2.0.7 版本的两个提交的合并发布过程
线上bug/线上功能
当前线上版本 1.0.1 ,你正在开发 1.0.2 。测试说快来修复正式环境的一个bug,要改完马上上线那种
封存 feature/1.0.2 上的修改
git stash
master上创建 bugfix/1.0.1.1
切换到 master ,创建 bugfix/1.0.1.1。可以的话可以创建一个 issue 对应bug的版本号
git switch master
git switch -c bugfix/1.0.1.1
修复完毕,提交
git add .
git commit -m "Mod: issue-1.0.1.1"
master 合并 bugfix/1.0.1.1
- 切换回 master
- 拉取
- 合并 bug 分支
- 推送
git switch master
git pull
git merge bugfix/1.0.1.1 --no-ff -m "Mod: bugfix issue 1.0.1.1"
git push
大功告成,继续开发
- 切换回 feature/1.0.2
- 恢复之前冻结的修改
- ... 继续肝
- 添加暂存区
- 提交修改
- 切换回 dev
- 拉取 dev
- 合并 feature/1.0.2
- 推送 dev
- 把线上bug 改动加到 dev。把bugfix提交的哈希xxx拿过来哈
- 推送 dev
git switch feature/1.0.2
git stash pop
...
git add .
git commit -m "Add: 1.0.2"
git switch dev
git pull
git merge feature --no-ff -m "Add: 1.0.2"
git push
git cherry-pick xxx
git push
SourceTree 图示
小结
- Git 普通合并:尽量将提交信息写入到命令中,不然会在命令行内让你写
- Git 普通合并:合并之前先
pull然后再合并 - 建议管理 Git 方式是 vscode 编辑器 和 SoureTree 结合使用
- SoureceTree 的图有助于我们的理解。git log 有点丑