Git - 分支管理

277 阅读2分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战1633933559611.png

前言

这里说的普通合并 --no-ff

我们有三个主要的分支 master release dev,远程和本地都有

查看分支图的工具是 SourceTree

本文介绍两种种情况下分支操作

  1. 常规开发流程
  2. 你正开发呢,被拉去做另一个功能(线上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 版本的两个提交的合并发布过程

image.png

线上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

  1. 切换回 master
  2. 拉取
  3. 合并 bug 分支
  4. 推送
git switch master
git pull
git merge bugfix/1.0.1.1 --no-ff -m "Mod: bugfix issue 1.0.1.1"
git push

大功告成,继续开发

  1. 切换回 feature/1.0.2
  2. 恢复之前冻结的修改
  3. ... 继续肝
  4. 添加暂存区
  5. 提交修改
  6. 切换回 dev
  7. 拉取 dev
  8. 合并 feature/1.0.2
  9. 推送 dev
  10. 把线上bug 改动加到 dev。把bugfix提交的哈希xxx拿过来哈
  11. 推送 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 图示

image.png

小结

  1. Git 普通合并:尽量将提交信息写入到命令中,不然会在命令行内让你写
  2. Git 普通合并:合并之前先 pull 然后再合并
  3. 建议管理 Git 方式是 vscode 编辑器 和 SoureTree 结合使用
  4. SoureceTree 的图有助于我们的理解。git log 有点丑