Git:将一个分支的特定提交合并到另一个分支的完整指南
一、Git 提交合并的基本方法
1.1 使用 cherry-pick(最常用方法)
适用场景:将某个分支的单个或多个指定提交应用到当前分支。
# 基本语法
# git cherry-pick <commit-hash>
# 示例:将 feature 分支的提交应用到 main 分支
# 1. 首先切换到目标分支
git checkout main
# 2. 查看要合并的提交 ID
git log --oneline --graph feature
# 3. 选择并合并特定提交
git cherry-pick abc123def
# 4. 合并多个不连续的提交
git cherry-pick abc123def 789xyz01
# 5. 合并连续范围的提交(左开右闭)
# 例如:合并从 A 到 B 的所有提交(不包括 A,包括 B)
git cherry-pick abc123^..def456
1.2 使用 merge --no-ff
适用场景:将整个分支的部分功能合并,但只想合并某个提交后的变化。
# 1. 创建一个临时分支,只包含要合并的提交
git checkout -b temp-branch <commit-hash>
# 或者从某个点开始
git checkout -b temp-branch feature-branch~3
# 2. 切换到目标分支
git checkout main
# 3. 合并临时分支
git merge --no-ff temp-branch
# 4. 删除临时分支
git branch -d temp-branch
二、详细操作步骤与示例
2.1 场景分析
假设我们有以下分支结构:
main 分支:A---B---C \
feature 分支:D---E---F---G
↑↑ 提交 E 提交 G(我们想合并的提交)
2.2 具体操作步骤
方法一:使用 cherry-pick(推荐)
# 步骤 1:确认当前所在分支
git branch
# 输出:* main
# 步骤 2:查看 feature 分支的提交历史
git log feature --oneline -5
# 输出:
# g789xyz1 (feature) 提交 G:添加用户注册功能
git cherry-pick e123def3
git add .
git cherry-pick --
git cherry-pick --abort
git cherry-pick g789xyz1
git --oneline -5 --graph


