Git mergr
以下是根据官方文档整理的 git merge 核心笔记,包含常用选项说明及实用示例:
git merge 核心功能
将指定分支的提交历史合并到当前分支,生成新的合并提交(默认行为)。
基础工作流
# 将 topic 分支合并到当前分支(如 main)
git merge topic
合并图示:
A---B---C topic
/ \
D---E---F---G-------H main(合并后)
核心选项说明与示例
- 合并控制
- 合并策略以及选项
策略使用-s 控制:
git merge -s ort dev
- ort(默认)
- ours (强行使用当前分支代码, 丢弃目标分支代码)
对于 ort 策略,有如下选项
- 提交信息
- 特殊场景
冲突处理关键步骤
- 识别冲突文件:冲突标记格式
<<<<<<< HEAD # 当前分支代码
当前分支修改内容
======= # 分隔符
目标分支修改内容
>>>>>>> topic # 目标分支名
解决冲突:
- 手动编辑文件删除标记
- 使用工具:
git mergetool(需配置)
完成合并:
git add resolved-file.txt
git merge --continue
常用配置项
# ~/.gitconfig
[merge]
conflictStyle = diff3 # 冲突显示祖先版本(默认merge)
ff = false # 禁止快进(总是生成合并提交)
renames = true # 开启重命名检测(默认开启)
典型场景示例
- 安全合并(检查后再提交)
git merge feature --no-commit # 合并但不提交
git diff # 检查变化
git commit -m "Merge feature" # 确认后提交
- 强制保留当前分支代码
# 合并 dev 分支,冲突时使用当前分支版本
git merge -X ours dev
- 合并无关联历史的分支
git remote add other-project /path/to/repo
git fetch other-project
git merge other-project/main --allow-unrelated-histories
⚠️ 警告:合并前务必提交或贮藏修改!未提交的变更可能导致
--abort无法完全恢复状态。