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

初识 git cherry-pick

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

假设提交历史如下:


git cherry-pick 将某个分支的某次 commit 应用到指定分支上_第1张图片
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 相同的更改,并创建一条新的记录。于是提交历史变成:


git cherry-pick 将某个分支的某次 commit 应用到指定分支上_第2张图片
cherry-pick 之后

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


git cherry-pick 将某个分支的某次 commit 应用到指定分支上_第3张图片
image

为何会产生冲突

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


原文出处:
git cherry-pick 详解

你可能感兴趣的:(git cherry-pick 将某个分支的某次 commit 应用到指定分支上)