神族九帝's blog 神族九帝's blog
首页
  • 神卡套餐 (opens new window)
  • 神族九帝 (opens new window)
  • 网盘资源 (opens new window)
  • 今日热点 (opens new window)
  • 在线PS (opens new window)
  • IT工具 (opens new window)
  • FC游戏 (opens new window)
  • 在线壁纸 (opens new window)
  • 面试突击
  • 复习指导
  • HTML
  • CSS
  • JavaScript
  • 设计模式
  • 浏览器
  • 手写系列
  • Vue
  • Webpack
  • Http
  • 前端优化
  • 项目
  • 面试真题
  • 算法
  • 精选文章
  • 八股文
  • 前端工程化
  • 一面
  • 工作笔记
  • 前端基础建设与架构 30 讲
  • vue2源码学习
  • 剖析vuejs内部运行机制
  • TypeScript 入门实战笔记
  • vue3源码学习
  • 2周刷完100道前端优质面试真题
  • 思维导图
  • npm发包
  • 重学node
  • 前端性能优化方法与实战
  • webpack原理与实战
  • webGl
  • 前端优化
  • Web3
  • React
  • 更多
  • 未来要做的事
  • Stirling-PDF
  • ComfyUI
  • 宝塔面板+青龙面板
  • 安卓手机当服务器使用
  • 京东自动评价代码
  • 搭建x-ui免流服务器(已失效)
  • 海外联盟
  • 好玩的docker
  • 收藏夹
  • 更多
GitHub (opens new window)

神族九帝,永不言弃

首页
  • 神卡套餐 (opens new window)
  • 神族九帝 (opens new window)
  • 网盘资源 (opens new window)
  • 今日热点 (opens new window)
  • 在线PS (opens new window)
  • IT工具 (opens new window)
  • FC游戏 (opens new window)
  • 在线壁纸 (opens new window)
  • 面试突击
  • 复习指导
  • HTML
  • CSS
  • JavaScript
  • 设计模式
  • 浏览器
  • 手写系列
  • Vue
  • Webpack
  • Http
  • 前端优化
  • 项目
  • 面试真题
  • 算法
  • 精选文章
  • 八股文
  • 前端工程化
  • 一面
  • 工作笔记
  • 前端基础建设与架构 30 讲
  • vue2源码学习
  • 剖析vuejs内部运行机制
  • TypeScript 入门实战笔记
  • vue3源码学习
  • 2周刷完100道前端优质面试真题
  • 思维导图
  • npm发包
  • 重学node
  • 前端性能优化方法与实战
  • webpack原理与实战
  • webGl
  • 前端优化
  • Web3
  • React
  • 更多
  • 未来要做的事
  • Stirling-PDF
  • ComfyUI
  • 宝塔面板+青龙面板
  • 安卓手机当服务器使用
  • 京东自动评价代码
  • 搭建x-ui免流服务器(已失效)
  • 海外联盟
  • 好玩的docker
  • 收藏夹
  • 更多
GitHub (opens new window)
  • 工作笔记

    • 国际化多语言一键替换,在线翻译
    • 虚拟列表
    • vscode插件开发
    • Code Review
    • 如果AI设计的界面不好看,可以试试下面的提示词
    • git合并冲突
      • ⚙️ 1. GitLab 线上解决冲突的机制
      • 🔄 2. 本地 `git merge` 与 GitLab 的差异
      • ⚠️ 3. 为何不符合开发规范?
      • 🛠️ 4. 解决方案:规范操作流程
        • ✅ 推荐方案:本地解决冲突(符合 Git 标准流程)
        • ⚠️ 规避 GitLab 在线解决(复杂场景)
      • 💎 5. 设计矛盾的本质
      • 📌 总结建议
  • 前端基础建设与架构 30 讲

  • vue2源码学习

  • 剖析vuejs内部运行机制

  • TypeScript 入门实战笔记

  • vue3源码学习

  • 2周刷完100道前端优质面试真题

  • 思维导图

  • npm发包

  • 重学node

  • 前端性能优化方法与实战

  • webpack原理与实战

  • webGl

  • 前端优化

  • Web3

  • React

  • 更多

  • 笔记
  • 工作笔记
wu529778790
2026-01-09

git合并冲突

开发的时候总是有人反向合并,但是那个人却感觉他没合并错误,查找之后发现是 gitlab 的锅,也就是 gitlab 线上合并会导致把 dev 分支的代码拉回到特性分支

GitLab 在线上解决冲突时出现“两个分支同步最新合并后代码”的现象,本质是其 冲突解决机制的设计差异 导致的,与本地 git merge 的行为逻辑不同。以下是详细分析及解决方案:


# ⚙️ 1. GitLab 线上解决冲突的机制

当你在 GitLab Web 界面点击 "Resolve conflicts" 时,系统会执行以下操作:

  • 自动创建合并提交:GitLab 直接在源分支(如 fix)上生成一个包含冲突解决方案的新提交,并将目标分支(如 dev)的最新内容合并到源分支中([2] [3] [11])。
  • 同步目标分支代码:为解决冲突,GitLab 必须将 dev 的最新代码拉取到 fix 分支,否则无法对比冲突点([9] [15])。
  • 结果:fix 分支被更新为包含 dev 分支最新代码的版本,导致 fix 分支“污染”(即包含非本分支的代码)。

💡 设计原因:GitLab 的在线冲突解决是为快速处理简单冲突设计的,依赖源分支直接提交解决方案,而非像本地操作那样在目标分支生成合并提交([3] [13])。


# 🔄 2. 本地 git merge 与 GitLab 的差异

本地合并的流程完全不同:

git checkout dev         # 切换到目标分支
git merge fix            # 合并特性分支
# 出现冲突时手动解决
git add .                # 标记冲突已解决
git commit -m "Merge fix into dev"  # 提交到目标分支(dev)
  • 结果:冲突解决方案仅提交到 dev 分支,fix 分支保持原状([16] [19])。

# ⚠️ 3. 为何不符合开发规范?

用户提到的 “dev 分支很脏” 问题核心在于:

  1. 分支职责混乱:fix 分支作为特性分支,应仅包含本功能代码。但 GitLab 的解决方式导致其混入 dev 的无关代码,破坏分支隔离性([6] [10])。
  2. 污染风险:若 dev 分支存在未测试代码,同步到 fix 分支可能引入新缺陷([6] [14])。
  3. 历史记录混乱:fix 分支的提交历史包含合并提交,干扰代码追溯([17])。

# 🛠️ 4. 解决方案:规范操作流程

# ✅ 推荐方案:本地解决冲突(符合 Git 标准流程)

# 在特性分支(fix)上操作
git checkout fix
git fetch origin          # 获取远程最新状态
git merge origin/dev      # 将 dev 合并到 fix(触发冲突)
# 手动解决冲突,保留所需代码
git add .
git commit -m "Resolve conflicts with dev"
git push origin fix       # 更新远程 fix 分支
  • 优点:冲突解决方案仅提交到 fix 分支,dev 分支保持纯净([15] [19])。
  • 后续操作:在 GitLab 重新发起合并请求(MR),此时无冲突可直接合并([5] [12])。

# ⚠️ 规避 GitLab 在线解决(复杂场景)

若坚持使用在线工具,需注意:

  1. 仅适用于文本冲突且改动简单的场景([2])。
  2. 解决后立即基于 fix 分支测试,避免污染代码影响功能([6])。

# 💎 5. 设计矛盾的本质

GitLab 的在线冲突解决是为简化流程设计的快捷工具,但违背了 Git 分支管理的核心原则:

  • 理想状态:合并时目标分支(dev)应单向集成源分支(fix)的变更,而非反向同步([10] [17])。
  • 妥协点:在线工具牺牲分支纯洁性换取操作便捷性,适合小团队或紧急修复([11] [13])。

# 📌 总结建议

场景 操作方式 分支清洁度
规范开发 本地解决冲突 ✅ 源/目标分支均纯净
简单冲突快速处理 GitLab 在线解决 ⚠️ 源分支被污染

最佳实践:

  1. 始终本地解决冲突,通过 git merge 或 IDE 工具(如 VS Code/GitKraken)操作([18] [19])。
  2. 合并前更新分支:确保 fix 分支基于 dev 的最新提交开发,减少冲突概率([12] [14])。
  3. 复杂项目推荐 GitFlow 分支模型,通过 release 分支隔离开发与集成交付([6])。

通过回归本地操作,可彻底避免分支污染问题,确保 dev 仅包含合并后的完整功能,而非开发中的中间状态([6] [10])。

编辑 (opens new window)
上次更新: 2026/01/09, 03:37:39
如果AI设计的界面不好看,可以试试下面的提示词
开篇词 像架构师一样思考,突破技术成长瓶颈

← 如果AI设计的界面不好看,可以试试下面的提示词 开篇词 像架构师一样思考,突破技术成长瓶颈→

最近更新
01
如果AI设计的界面不好看,可以试试下面的提示词
10-09
02
HTTP网络请求
12-08
03
Code Review
10-14
更多文章>
Power by vuepress | Copyright © 2015-2026 神族九帝
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×