当前位置: 首页 > news >正文

Git 分支流程(合并分支)

一、 核心原则

  1. 保护主干分支:develop 和 main 等主干分支是项目的“生命线”,必须保持稳定。禁止直接在这些分支上进行功能开发。
  2. 功能隔离:每个新功能或 Bug 修复都应在独立的 feature/xxx 或 bugfix/xxx 分支上进行开发。
  3. 先拉后合:在合并前,必须确保自己的主干分支是最新状态,以减少冲突。
  4. 解决冲突是责任:合并时产生的冲突,由发起合并的开发者负责解决。

二、 标准合并流程(推荐 --squash 模式)

此流程旨在将一个功能分支的所有变更,以一个干净的提交合并到主干分支,保持提交历史的简洁与线性。
阶段一:合并前准备

  1. 完成本地开发
    ○ 在功能分支(如 feature/ob360studio_logger)上完成所有开发和测试。
    ○ 确保代码在本地编译通过并能正常运行。
  2. 提交所有本地更改
    ○ 执行 git status 检查工作区状态。
    ○ 将所有相关修改 git add . 并 git commit 提交。
    ○ 目的:确保工作区“干净”,避免合并时因未跟踪文件或未提交修改而中断。
  3. 切换到目标分支
    ○ 切换到你想要合并进去的分支,通常是 develop。
    git checkout develop
    
  4. 拉取最新代码
    ○ 确保你的 develop 分支是远程最新的。
    git pull origin develop
    
    ○ 目的:将其他同事的最新提交同步到本地,最大限度地减少合并冲突。
    阶段二:执行合并
  5. 执行 --squash 合并
    ○ 使用 --squash 参数将功能分支的所有变更“压平”为一个待提交的变更集。
    git merge --squash feature/xxx
    
    ○ 效果:该命令会将 feature/xxx 分支上的所有文件变更,应用到你当前的 develop 分支工作区中,但不会创建任何提交记录。
  6. 处理合并过程中的问题
    ○ 问题:
    ■ 原因:你在 develop 分支上有未提交的修改,而这些修改的文件在功能分支中也被改动了。
    ■ 解决:在执行 git checkout develop 前,先提交或暂存 (git stash) 你的本地修改。
    ○ 问题:
    ■ 原因:你的工作区存在一个未被 Git 跟踪的文件(例如 Logger.cpp),而功能分支中也存在同名文件。
    ■ 解决:在合并前,先处理该文件。你可以:
    ■ git add 它,使其被跟踪。
    ■ 临时重命名或移动它(如 mv Logger.cpp Logger.cpp.backup)。
    ■ 如果确定不需要,直接删除 (rm Logger.cpp)。
  7. 提交合并结果
    ○ --squash 操作完成后,所有变更都处于“已暂存”状态。
    ○ 执行一次提交,将这些变更正式纳入 develop 分支。
    git commit -m “feat: add logger module from xxx”
    ○ 关键:提交信息应清晰描述本次合并的功能。

如果你在合并后对代码做了任何手动修改(包括解决冲突、调整格式、删除调试代码等),都必须重新执行 git add 和 git commit,否则这些修改不会被纳入版本控制

1. 检查修改了哪些文件

git status

2. 将修改加入暂存区

git add .

3. 重新提交(可以 amend 到上一次提交,或新建一次提交)

选项 A:合并到上一次提交(保持只有一个提交)

git commit --amend --no-edit

选项 B:新建一次提交(保留修改记录)

git commit -m "fix: adjust merged code for compatibility"

阶段三:合并后操作

  1. 推送更新
    ○ 将合并后的 develop 分支推送到远程仓库。

    git push origin develop
    
  2. 清理功能分支
    ○ (可选但推荐) 删除已合并的功能分支,保持分支列表整洁。
    ○ 删除本地分支:

    git branch -d feature/xxx
    

    ○ 删除远程分支:

    git push origin --delete feature/xxx
    
  3. 通知团队
    ○ 通过团队沟通工具(如企业微信、钉钉、邮件)通知团队成员,某个功能已合并,可以更新代码进行联调。

三、 关键优势

● 历史清晰:主干分支的提交历史是线性的,每个功能只对应一个提交,易于追溯。
● 无冗余记录:不会产生 Merge branch ‘feature/xxx’ into develop 这样的合并提交,保持历史干净。
● 操作安全:–squash 模式将合并过程分解,开发者有充分的机会检查和确认所有变更。
● 易于回滚:如果合并后发现问题,可以通过一次 git revert 操作,轻松回滚整个功能。

四、 注意事项

● --squash 的代价:使用 --squash 后,功能分支的原始提交历史将丢失。因此,务必确保在合并前,功能分支的代码已经过充分的审查(Code Review)。
● 及时沟通:在合并大型或核心功能前,建议与团队负责人或相关开发者进行沟通。
● 自动化检查:理想情况下,合并操作应在 CI/CD 流水线中进行,自动执行代码检查、编译和测试,确保合并不会引入问题。

http://www.dtcms.com/a/582610.html

相关文章:

  • idea可以做网站吗最好的网站代运营公司
  • BSS供应商:电信与金融领域的幕后支撑者
  • 精通网站开发书籍wordpress 很占内存
  • 找个男做那个视频网站好东营网站建设哪家更好
  • Linux/Windows 安装miniforge
  • 近3年时政与综合类结构化真题汇总与备考策略
  • 设备资产管理都有哪些具体业务
  • 从一到无穷大 #55 提升Lakehouse查询性能:数据层面
  • 交互设计专业学什么seo常用工具网站
  • 如何让百度快速大量收录 如何增加百度收录量的方法有哪些
  • APP上架到应用商店的完整流程解析
  • 莆田网站建设维护网站制作的分割线怎么做
  • Python 字典推导式入门:一行构建键值对映射
  • 怎么让自己的网址被百度收录(网站如何被百度收录进去)
  • 简易静态网站制作流程图室内设计师工资
  • 爬虫导致IP被封号了如何解封?
  • 网站平台建设公司邮箱或企业邮箱
  • 临沂网站制作加速企业发展用什么软件制作网站
  • C++:类和对象---进阶篇
  • 深圳市南山区住房和建设局网站官网淘宝客怎么做网站导购
  • e网科技网站石家庄seo网站优化公司
  • 合肥响应式网站开发方案网站建设新得体会
  • 手绘教学网站网络规划与设计专业
  • 网站做多语言wordpress 仿虎嗅
  • 打工人日报#20251107
  • 网站常用颜色wordpress 替换编辑器
  • 数据治理咨询项目方案建议书
  • SSE实时推送订单状态
  • 单页产品销售网站如何做推广软件开发人天报价标准
  • 上海网站开发培训价格网站建设代理费用