Git:合并提交节点到其它分支的详细操作[git cherry-pick]

本文介绍了如何使用gitcherry-pick命令将特定的提交应用到其他分支,包括单个提交、多个提交以及指定范围的提交。同时,文章也提到了处理cherry-pick时可能出现的冲突及错误情况,如重复提交和解决冲突的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git cherry-pick:合并提交节点到其它分支,将指定的提交(commit)应用于其他分支。

例,代码仓库有如下两个分支masterfeature分支。

    a - b - c - d   Master
         \
           e - f - g - h - i - j - k   Dev

现在将提交 f (commit hash id)应用到master分支。

# 在Dev分支获取最近节点的HASHcommit值  
$ git log --oneline

# 切换到 master 分支 
$ git checkout master

# 执行 Cherry pick 操作
$ git cherry-pick f

上面的操作完成以后,代码库就变成了下面的样子。

    a - b - c - d - f   Master
         \
           e - f - g - h - i - j - k   Dev

Cherry pick 支持的其它提交方式。

# 应用Dev分支最新提交
$ git cherry-pick Dev

# 应用多个提交: 合并g,i两个提交
$ git cherry-pick <HashG> <HashI>

# 应用 f - k 之间的提交,不包含F节点本身,注意f节点必须是k节点前的提交节点
$ git cherry-pick f..k 

# 应用 f - k 之间的提交,包含F节点本身
$ git cherry-pick f^..k 

需要注意的是执行git cherry-pick 后,只是将提交合并到本地,需要执行git push 指令,才会将合并commit提交到远程库。

报错处理。

如果在cherry-pick的时候出现类似以下错误提示,那可能是是对同一提交重复做cherry-pick引起的。

The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git cherry-pick --skip'
On branch auto-7940289-dev-0b41beba
Your branch is up to date with 'origin/auto-7940289-dev-0b41beba'.

You are currently cherry-picking commit e924fd2.
  (all conflicts fixed: run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Error content分析:没有冲突输出,而是提示如果要提交则需要做空提交(git commit --allow-empty),说明这次cherry-pick的内容可能已经在这个分支上提交过了。

可以验证:1、查看这个哈希值所修改的文件  2、查看某个文件的修改log     3、有相同的提交注释
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值