✍️记录自己的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 时直接快速前进,保持提交历史干净利落。

最后

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

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

相关链接

相关推荐
952365 小时前
MyBatis
后端·spring·mybatis
ZC跨境爬虫8 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
前端老石人8 小时前
HTML 字符引用完全指南
开发语言·前端·html
幼儿园技术家8 小时前
前端如何设计权限系统(RBAC / ABAC)?
前端
uzong9 小时前
9 种 RAG 架构,每位 AI 开发者必学:完整实战指南
后端
qq_435287929 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本9 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab9 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
前端摸鱼匠10 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker10 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js