git merge 合并分支
git merge 命令将一个分支的变更合并到当前分支。
基本用法
Bash
# 合并指定分支到当前分支
git merge <branch>
# 合并 feature 到 main
git checkout main
git merge feature
合并流程
Bash
# 1. 切换到目标分支(接收合并的分支)
git checkout main
# 2. 合并源分支
git merge feature/login
# 3. 处理冲突(如果有)
# 手动编辑冲突文件
# 4. 提交合并结果
git add .
git commit -m "Merge feature/login"
合并类型
| 类型 | 说明 | 产生结果 |
|---|---|---|
| 快进合并 | 目标分支无新提交 | 直接移动指针 |
| 普通合并 | 两个分支都有提交 | 创建合并提交 |
| 冲突合并 | 同文件不同修改 | 需手动解决 |
快进合并
Bash
合并前:
main: A → B → C
feature: A → B → C → D → E
合并后:
main: A → B → C → D → E (指针直接移动)
Bash
# Git 自动执行快进合并
git merge feature
# Fast-forward
普通合并
Bash
# 禁止快进合并,创建合并提交
git merge --no-ff feature
# 合并提交结构
# A → B → C → M (merge commit)
# ↗
# A → E → F
处理合并冲突
Bash
# 冲突时的文件内容
<<<<<<< HEAD
当前分支的内容
=======
要合并分支的内容
>>>>>>> feature
# 解决步骤:
# 1. 编辑文件,保留需要的内容
# 2. 删除冲突标记
# 3. git add <file>
# 4. git commit
冲突解决示例
Bash
# 原冲突内容
<<<<<<< HEAD
console.log("Hello");
=======
console.log("Hi");
>>>>>>> feature
# 解决后
console.log("Hello");
常用选项
text
# 禁止快进,创建合并提交
git merge --no-ff feature
# 强制快进
git merge --ff-only feature
# 查看合并结果但不提交
git merge --no-commit feature
合并冲突时冷静处理,理解两边的修改意图后选择正确的合并结果。
要点总结
- 先切换到目标分支再执行合并
- 快进合并:直接移动指针,无合并提交
--no-ff创建合并提交,保留分支历史- 冲突时手动编辑文件解决,再提交
- 冲突标记:
<<<<<<<=======>>>>>>>
📝 发现内容有误?点击此处直接编辑