git cherry-pick 将某个分支的某次 commit 应用到指定分支上

初识 git cherry-pick

git cherry-pick 会提取其他分支的某次提交的补丁,然后将其重新应用到当前分支上。

假设提交历史如下:


cherry-pick 之前

如果你希望将提交 e43a6 拉取到 master 分支,你可以运行:

# 切换到 master 分支
$ git checkout master
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index [图片上传中...(image-2a2d63-1566181476468)]
fails."
 3 files changed, 17 insertions(+), 3 deletions(-)

这样会拉取和 e43a6 相同的更改,并创建一条新的记录。于是提交历史变成:


cherry-pick 之后

需要再次强调的是,pick 的某次补丁(C3)是基于其父(C4)提交的,这很好理解,cherry-pick 的只是某个分支的仅仅某一次的一条 commit,而不某个分支那条 commit 及其之前的更改。


image

为何会产生冲突

同 merge 操作一样,当差异过大时,pick 的某次补丁已经无法顺利应用到当前分支,产生无法自动解决的冲突时,便需要手动解决,所以遇到问题再说!


原文出处:
git cherry-pick 详解

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容