Git - cherry-pick

文章目录


前言

本地 Git 仓库有两个分支,分别为 maindevdevmain 在 hash 为 a2 的时候创建的开发分支:

cherry-pick-1

现在需要将 dev 分支中 hash 为 b1 的 commit 单独合并到分支 main 去:

cherry-pick-2

这种将 dev 中部分特定 commit 合并到其他分支的操作在 git 中的命令是 cherry-pick 🍒

git

准备好初始环境:

> git branch
  dev
* main
>
> git log
commit 77187baebd460f50dd879c03b1932f13d13171cc (HEAD -> main)
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:56:03 2023 +0800

    a4

commit 859e40cf0b9ace1b543ca7a88e62f7820cfa978d
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:55:28 2023 +0800

    a3

commit de4d2ecc931a45da3f02c2a84d253f50d142f6e2
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:51:17 2023 +0800

    a2

commit 276c4e3159700a74ee33eb75903dd85a192460c5
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:50:37 2023 +0800

    a1
> 
> git checkout dev
Switched to branch 'dev'
> 
> git log
commit bf7fa7184ba7407f4d55ede26c5de8addf115498 (HEAD -> dev)
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:54:46 2023 +0800

    b2

commit adcdccd49e86b15d18d2bae4fe45cf077b1f087c
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:54:13 2023 +0800

    b1

commit de4d2ecc931a45da3f02c2a84d253f50d142f6e2
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:51:17 2023 +0800

    a2

commit 276c4e3159700a74ee33eb75903dd85a192460c5
Author: xianzhan <email@qq.com>
Date:   Wed Nov 29 22:50:37 2023 +0800

    a1

OK,环境准备好之后就是最重要的操作了:

> git checkout main
Switched to branch 'main'
> 
# 分支 dev 提交 b1 对应的 hash
> git cherry-pick 'adcdccd49e86b15d18d2bae4fe45cf077b1f087c'
Auto-merging cherry.txt
CONFLICT (content): Merge conflict in cherry.txt
error: could not apply adcdccd... b1
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".

有上面的一大串文字是因为在合并时文件有冲突了,只要我们使用 VS Code(或者其他编辑器)解决就好:

cherry-pick-冲突

点击右下角的 Resolve in Merge Editor

cherry-pick-Resolve in Merge Editor

解决冲突地方

cherry-pick-Result

确定无误后点击 Complete Merge

cherry-pick-conflict
cherry-pick-close
cherry-pick-commit
cherry-pick-done

资源

Git - git-cherry-pick Documentation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
git cherry-pick命令的作用是将指定的提交应用于其他分支。你可以使用git cherry-pick命令来复制并应用一个或多个特定的提交到当前分支。基本的git cherry-pick命令格式为:git cherry-pick <commitHash>,其中<commitHash>是要应用的提交的哈希值。另外,你也可以使用类似于git cherry-pick commit1 commit2 commit3 ... commitN的格式来一次性复制和应用多个提交。而当发生代码冲突时,你可以使用git cherry-pick --abort命令来放弃当前的cherry pick操作,但是不会恢复到操作之前的状态。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [git cherry-pick](https://blog.csdn.net/tangsiqi130/article/details/131375623)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [learn-git-cherry-pick:一个展示如何使用基本的cherry-pick 命令的repo](https://download.csdn.net/download/weixin_42101056/19721748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [git操作之cherry-pick](https://blog.csdn.net/TheOne0226/article/details/129036945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值