Git 分支merge合并常用步骤与命令操作

( Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu )

(注:文章采用豆包AI做输出材料整理)

使用git做代码的管理,对于开发人员来说,时常要做的就是代码分支的合并。

如何来做代码分支的合并呢,如何能够较少的出差错来做代码分支的merge合并。

对于向master分支合并的过程,个人感觉的话,采用如下的策略步骤:

  1. 提前清理环境,保证待合并分支目录干净:切master→拉远端最新→stash清脏区→校验干净。
  2. 选择合并操作:预览分支差异→按需 普通合并 或 squash 合并。
  3. 解决合并冲突:冲突三选一解决→自查代码 + 编译跑通。
  4. 提交但不push远端,检查合并内容:本地 commit→看分支树 + 双亲差异核验。
  5. 合并内容检查测试通过,Push远端:dry-run 模拟推送→确认后真实 push。
  6. 合并内容异常,回退重新合并:本地未 push 直接 reset 回退;清临时缓存之后再重新走合并。

第一步:清理环境,保证 master 干净

目标 :合并前必须让本地 master 分支无未提交修改、无冲突文件

bash 复制代码
# 1. 切换到主分支 master
git checkout master

# 2. 拉取远端最新代码(避免本地过时)
git pull origin master

# 3. 清理未提交的修改(暂存/丢弃二选一)
# 方案A:暂存修改(后续还能用)⭐推荐
git stash

# 方案B:直接丢弃所有未提交修改(谨慎使用)
# git reset --hard && git clean -fd

# 4. 验证环境是否干净(输出 nothing to commit 即成功)
git status

第二步:执行合并(二选一,核心区别:保留/压缩提交历史)

选项1:保留完整提交历史(默认,推荐多人协作)

直接合并,分支所有提交记录都会保留:

bash 复制代码
# 合并你的分支到 master
git merge branch1

选项2:压缩提交历史(Squash,干净整洁)

把分支上所有提交打包成 1 个新提交,看不到原始提交记录:

bash 复制代码
git merge --squash branch1

执行后会自动暂存所有变更,需要手动 commit


第三步:解决合并冲突(最常用 3 种方案)

如果合并时报 Automatic merge failed; fix conflicts and then commit the result.,就是有冲突。

冲突处理方案(对应你说的三种)

  1. 使用 master 版本(保留主分支代码)
    丢弃分支的修改,完全用 master 原有代码
  2. 使用分支版本(保留开发分支代码)
    丢弃 master 的修改,完全用分支代码
  3. 手动修改代码 → 标记为已解决(最常用)
    手动编辑冲突文件,删除 <<<<<<</=======/>>>>>>> 标记

命令行快速解决冲突

bash 复制代码
# 查看哪些文件冲突
git status

# 方案1:指定文件使用 master 版本
git checkout --ours 冲突文件路径

# 方案2:指定文件使用分支版本
git checkout --theirs 冲突文件路径

# 方案3:手动修改后,标记冲突已解决
git add 冲突文件路径

# 所有冲突解决后
git commit

第四步:本地提交,检查合并结果(不 Push)

  1. 完成合并/解决冲突后,执行提交:
bash 复制代码
# squash 合并必须手动 commit;普通合并可直接commit
git commit -m "合并分支:branch1"
  1. 检查分支树和修改记录
bash 复制代码
# 图形化查看分支合并记录 ⭐
git log --graph --oneline --all
  • Differ with parent1:你合并分支(branch1)的修改
  • Differ with parent2:主分支 master 的修改
    核对修改内容,确认无误再推送。

第五步:推送远端 / 合并失败回退

1. 确认无误,推送到服务器

bash 复制代码
git push origin master

2. 合并出错,回退重来(关键!)

如果合并后发现错误,一键恢复到合并前的干净 master

bash 复制代码
# 查看合并前的 commit ID
git reflog

# 回退到合并前的版本(替换为你的commit ID)
git reset --hard 合并前的commitID

# 清理残留文件
git clean -fd

# 恢复后重新拉取最新代码
git pull origin master

回退后回到第一步,重新合并即可。


完整极简命令速查表(直接复制用)

bash 复制代码
# 1. 清理环境
git checkout master
git pull
git stash
git status

# 2. 合并(二选一)
git merge 分支名        # 保留历史
git merge --squash 分支名  # 压缩历史

# 3. 解决冲突 → git add → git commit

# 4. 检查
git log --graph

# 5. 推送/回退
git push
# 出错回退:git reset --hard 版本号

总结

  1. 合并核心:先清环境、再合并、解冲突、本地检查、最后推送
  2. 历史选择:协作用普通合并 ,个人开发用squash压缩
  3. 安全兜底:合并出错用 git reset --hard 回退,之后重新发起合并。

( Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu )

相关推荐
打不了嗝 ᥬ᭄6 小时前
Git 原理与使用
git·gitee
m0_614619069 小时前
花了一下午学 Git,整理了一份学习笔记
笔记·git·学习
AGV算法笔记10 小时前
解决Git> git add -A -- fatal: CRLF would be replaced by LF in Test/Test.cpp
git
Dontla11 小时前
VSCode插件Git Graph介绍(Git可视化管理分支、可视化Git)
ide·git·vscode
Echoo华地12 小时前
用git diff快速比较文件夹差异并生成报告
linux·git·unix·repository·diff·branch
勤劳打代码13 小时前
防微杜渐 —— 为什么一次 Sync 会变成一次 merge?
git·团队管理
dyxal14 小时前
Windows 下 Git 离线安装与 VS Code 便携版集成完全指南
windows·git·elasticsearch
K3v14 小时前
【git】自动化合并推送脚本
git·自动化
鹓于14 小时前
Android APK开发到发布全流程指南
git·github
花哥码天下15 小时前
Git 多远程仓库管理
git