把相同的改动应用到两个不同分支

把相同的改动应用到两个不同分支,有以下几种常用方法:


方法一:先提交,再 cherry-pick(最常用)

在一个分支上提交改动后,用 cherry-pick 把该提交"摘"到另一个分支上。

# 1. 在当前分支提交改动
git add .
git commit -m "feat: 某个功能改动"

# 2. 查看刚才的 commit hash
git log --oneline -1
# 假设输出: abc1234 feat: 某个功能改动

# 3. 切换到目标分支
git checkout branch-b

# 4. 把那个提交摘过来
git cherry-pick abc1234

cherry-pick 会创建一个内容相同但 SHA 不同的新提交,原提交保持不变。


方法二:先新建分支,再 cherry-pick 回来

如果你想让两个新分支都拥有同一份改动:

# 1. 在当前分支提交改动
git add .
git commit -m "feat: 某个功能改动"
git log --oneline -1  # 记下 commit hash,如 abc1234

# 2. 创建第一个新分支(会自动携带当前提交)
git checkout -b branch-a

# 3. 回到原分支,创建第二个新分支
git checkout main
git checkout -b branch-b

# 4. 把提交摘到 branch-b
git cherry-pick abc1234
# 1. 创建第一个分支(自动携带当前提交)
git checkout -b branch-a

# 2. 回到原分支,创建第二个分支
git checkout main
git checkout -b branch-b

# 3. 把提交摘过来
git cherry-pick branch-a

方法三:改动还没提交时,用 stash 中转

如果你的改动还在工作区,尚未 commit:

# 1. 创建第一个分支并提交
git checkout -b branch-a
git add .
git commit -m "feat: 某个功能改动"

# 2. 回到原分支,创建第二个分支
git checkout main
git checkout -b branch-b

# 3. 从 branch-a cherry-pick 过来
git cherry-pick branch-a

方法四:用 patch 文件(适合跨仓库)

# 1. 生成补丁文件
git format-patch -1 HEAD   # 导出最近一次提交为 .patch 文件

# 2. 切换到目标分支,应用补丁
git checkout branch-b
git am 0001-xxx.patch

总结对比

方法 适用场景 特点
cherry-pick 改动已提交,复制到另一个分支 最常用,简单直接
新建分支 + cherry-pick 需要两个新分支都有相同改动 一次提交,多处复用
stash 中转 改动未提交,需灵活分配 适合临时场景
format-patch + am 跨仓库或需要离线传递 生成独立补丁文件

大多数情况下,方法一(cherry-pick) 就够了,简洁高效。


需要我展开讲讲 cherry-pick 时遇到冲突怎么处理吗?

posted @ 2026-08-28 10:07  涣明  阅读(1)  评论(0)    收藏  举报