初识 git cherry-pick
git 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 相同的更改,并创建一条新的记录。于是提交历史变成:
需要再次强调的是,pick 的某次补丁(C3)是基于其父(C4)提交的,这很好理解,cherry-pick 的只是某个分支的仅仅某一次的一条 commit,而不某个分支那条 commit 及其之前的更改。
为何会产生冲突
同 merge 操作一样,当差异过大时,pick 的某次补丁已经无法顺利应用到当前分支,产生无法自动解决的冲突时,便需要手动解决,所以遇到问题再说!
原文出处:
git cherry-pick 详解
网友评论