手动合并到主分支参考

本文用于记录两个相关仓库从功能分支合并到主分支的通用流程。示例只使用泛化名称,复制到公开笔记时按需替换路径和分支名。

适用场景

  • 功能已经开发完成,并且已经在测试或生产环境验证过。
  • 需要把前端仓库和后端仓库的功能分支同步合并到 master
  • 两个仓库分别独立管理 Git 历史,需要分别检查、合并和推送。

合并前检查

先分别进入两个仓库,确认工作区干净:

bash 复制代码
cd <frontend-repo>
git status --short --branch

cd <backend-repo>
git status --short --branch

如果有未提交改动,先确认这些改动是否属于本次发布:

  • 属于本次发布:先提交到功能分支,再合并。
  • 不属于本次发布:先暂存到 stash,或切到新的临时分支保存。
  • 不确定来源:不要直接丢弃,先确认再处理。

拉取远端信息

分别获取远端主分支和功能分支:

bash 复制代码
cd <frontend-repo>
git fetch origin master <frontend-feature-branch>

cd <backend-repo>
git fetch origin master <backend-feature-branch>

检查本地 master 是否和远端一致:

bash 复制代码
git rev-list --left-right --count master...origin/master

输出 0 0 表示本地 master 与远端 master 一致。

检查功能分支相对 master 的提交数量:

bash 复制代码
git rev-list --left-right --count master...<feature-branch>

如果输出类似 0 69,表示 master 是功能分支祖先,可以使用 fast-forward 合并。

合并前端仓库

bash 复制代码
cd <frontend-repo>
git switch master
git merge --ff-only <frontend-feature-branch>

如果成功,会看到 Fast-forward。如果失败,说明不能快进合并,需要先检查是否有并行提交或冲突。

合并后端仓库

bash 复制代码
cd <backend-repo>
git switch master
git merge --ff-only <backend-feature-branch>

同样优先使用 --ff-only,这样主分支历史会保持线性,更容易回溯。

推送主分支

确认两个仓库合并成功后,分别推送:

bash 复制代码
cd <frontend-repo>
git push origin master

cd <backend-repo>
git push origin master

推送完成后,再确认主分支状态:

bash 复制代码
git status --short --branch
git log --oneline --decorate -5

如果不能 fast-forward

如果 git merge --ff-only <feature-branch> 报错,先不要强推。按下面顺序处理:

bash 复制代码
git fetch origin master <feature-branch>
git switch master
git pull --ff-only origin master
git merge <feature-branch>

如果出现冲突:

bash 复制代码
git status --short

打开冲突文件,保留正确内容后执行:

bash 复制代码
git add <resolved-files>
git commit
git push origin master

冲突处理完成后,建议至少运行一次项目自身的基础检查,例如类型检查、单元测试、构建或核心接口冒烟测试。

推荐核对清单

  • 工作区在合并前是干净的。
  • 本地 masterorigin/master 一致。
  • 功能分支已经包含本次要发布的全部提交。
  • 前端仓库已合并到 master
  • 后端仓库已合并到 master
  • 两个仓库的 master 都已推送远端。
  • 如有数据库变更,已确认线上应该执行的是增量 SQL,而不是全新初始化 SQL。
  • 如有部署流程,已确认部署使用的是更新后的 master

常用命令速查

bash 复制代码
git status --short --branch
git fetch origin master <feature-branch>
git rev-list --left-right --count master...origin/master
git rev-list --left-right --count master...<feature-branch>
git switch master
git merge --ff-only <feature-branch>
git push origin master
git log --oneline --decorate -5
相关推荐
webor20064 小时前
<七>从3秒记忆到过目不忘——语言模型的三代进化
人工智能·语言模型·自然语言处理
ZJU_统一阿萨姆7 小时前
【推理优化进阶】通信关键路径:NCCL、RDMA 与计算通信重叠
开发语言·人工智能·语言模型·架构·系统架构
学习中.........8 小时前
Karpathy nanoGPT 教程到底讲了什么
人工智能·算法·语言模型
0x3F(小茶)12 小时前
Tokenization(分词算法):一切大语言模型的地基
人工智能·算法·语言模型
问天_观心1 天前
零基础在windows环境下的WSL使用llamafactory(二)
人工智能·神经网络·语言模型·github·模型蒸馏
专注仿真1 天前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
阿维的博客日记1 天前
什么是unigram语言模型
人工智能·语言模型·自然语言处理
ZJU_统一阿萨姆1 天前
【推理优化进阶】调度器的数学内核:排队论、SLO 与在线决策
开发语言·人工智能·语言模型·系统架构·vllm
ZJU_统一阿萨姆1 天前
【推理优化进阶】图编译与运行时:动态形状、CUDA Graph 与内存规划
开发语言·人工智能·语言模型·架构·开源
树码小子1 天前
什么是大语言模型
人工智能·语言模型·mvc