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

最后

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

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

相关链接

相关推荐
像风一样自由20202 小时前
Go语言入门指南-从零开始的奇妙之旅
开发语言·后端·golang
合作小小程序员小小店2 小时前
web网页开发,在线考勤管理系统,基于Idea,html,css,vue,java,springboot,mysql
java·前端·vue.js·后端·intellij-idea·springboot
防火墙在线2 小时前
前后端通信加解密(Web Crypto API )
前端·vue.js·网络协议·node.js·express
Jacky-0082 小时前
Node + vite + React 创建项目
前端·react.js·前端框架
CoderYanger3 小时前
前端基础——CSS练习项目:百度热榜实现
开发语言·前端·css·百度·html·1024程序员节
i_am_a_div_日积月累_3 小时前
10个css更新
前端·css
间彧3 小时前
SpringBoot + MyBatis-Plus + Dynamic-Datasource 读写分离完整指南
数据库·后端
间彧4 小时前
数据库读写分离下如何解决主从同步延迟问题
后端
码事漫谈4 小时前
C++中的线程同步机制浅析
后端