✍️记录自己的git分支管理实践

前言

👋 你好啊,我是你的人类朋友!

因为本人的开发经常涉及各个分支间的同步,这一套同步的流程从刚开始的小心翼翼,到现在相对熟悉了

所以我想记录下自己工作中常用的分支同步的步骤 😆

顺便研究康康有没有可以优化的地方 🍃

正文

先介绍下背景情况吧

首先主分支为 master

其次,因为开发分为多个阶段,比如 phase_1phase_2phase_3

那就在 master 之后再创建 feature/phase_1feature/phase_2 这样的分支,作为每一个 phase 的主分支

每一个人的开发分支可以这样安排:我叫江建清,所以我的 phase2阶段 的开发分支的名称为feature/phase_2_devjjq

重点来了,我现在要将我的 feature/phase_2_devjjq 分支的改动同步到 feature/phase_2 分支中

如何操作呢?

重点!重点!重点!

先上 git 命令,后面有文字版

  1. git checkout feature/phase_2
  2. git pull origin feature/phase_2
  3. git checkout feature/phase_2_devjjq
  4. 【✨ 将冲突放到 feature/phase_2_devjjq 分支解决,完全不影响 feature/phase_2git merge feature/phase_2
  5. 解决好可能存在的冲突【注意,如果此处存在冲突,要进行解决,并且要做好测试。确保无误之后再进行后续的同步。⚠️❗ 核心的思路是:绝不可以将不能确定解决之后是否存在异常的内容推送到当前阶段的主分支,这一点在低代码领域尤其突出,需要更加谨慎】,然后将代码提交到 feature/phase_2_devjjq 分支中
  6. git checkout feature/phase_2
  7. git merge feature/phase_2_devjjq
  8. git push origin feature/phase_2

上面就是我目前的大致做法了。

用文字总结就是:

  1. 先切换到 feature/phase_2 分支
  2. 拉取feature/phase_2的最新代码(因为各个同事都会开发,也都会向这个分支提交代码)
  3. 切换到 feature/phase_2_devjjq 分支
  4. 合并 feature/phase_2 分支到 feature/phase_2_devjjq 分支
  5. 解决可能存在的冲突
  6. 切换到 feature/phase_2 分支
  7. 合并 feature/phase_2_devjjq 分支到 feature/phase_2 分支
  8. 推送 feature/phase_2 分支到远程仓库

好了,那我的流程有哪些可以优化的地方?

优化流程

当前的流程总结下来是这样的:

步骤分解:

  1. git checkout feature/phase_2 ✅

  2. git pull origin feature/phase_2 ✅

  3. git checkout feature/phase_2_devjjq ✅

  4. git merge feature/phase_2 ⚠️ (产生合并提交)

  5. 解决冲突 ✅

  6. git checkout feature/phase_2 ✅

  7. git merge feature/phase_2_devjjq ⚠️ (再次产生合并提交)

  8. git push origin feature/phase_2 ✅

我们可以这样优化:

bash 复制代码
# 1-2. 更新目标分支(保持不变)
git checkout feature/phase_2
git pull origin feature/phase_2

# 3. 切换到开发分支
git checkout feature/phase_2_devjjq

# 4. ✨ 关键优化:使用 rebase 而不是 merge。这个步骤做的事情其实就是将 feature/phase_2_devjjq 分支的提交放到 feature/phase_2 分支的最新提交之后。
git rebase feature/phase_2

# 5. 解决可能的冲突(在 rebase 过程中)
# 如果有冲突:
git add .
git rebase --continue

# 6-7. 快速前进合并
git checkout feature/phase_2
git merge feature/phase_2_devjjq  # 这会是一个 fast-forward 合并

# 8. 推送
git push origin feature/phase_2

之前有写过关于 git 变基 的文章,不太清楚这个概念的小伙伴可以去康康
关于git 的快速合并 ,我之前也有写过文章,不太清楚的小伙伴可以去康康!

详细解读

我原来的流程会产生多余的合并提交,让提交历史变得复杂。

我的优化核心: 在第 4 步用 rebase 代替 merge

优化后的效果是什么呢?

  • 将我的提交"移植"到 phase_2 最新代码之后,保持提交线整洁
  • 后续合并时能使用快速前进,不产生额外合并提交
  • 最终提交历史是清晰的一条直线,便于追踪

😎 小总结: 我用 rebase 让我的改动"接上"最新代码,merge 时直接快速前进,保持提交历史干净利落。

最后

✍️ 上面就是我想分享的分支管理实践了以及优化后的效果了

抛砖引玉,希望能对大家有所帮助!

相关链接

相关推荐
程序员黑豆5 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊5 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃5 小时前
前端转全栈学习路线
前端·学习
浮生望6 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry6 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
维克兜率天7 小时前
【维克】ARMA模型:AR与MA的完美结合
后端·restful
是未才8 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
上海安当技术8 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队9 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_4316004410 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js