Git cherry-pick 复制 commit

Posted everlose

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git cherry-pick 复制 commit相关的知识,希望对你有一定的参考价值。

应用背景

当你写完代码 commit 完心中暗爽,正准备 push 时,突然发现原来自己当前分枝就在 master 上,master 只能用来上线打版本,当然不能直接操作,可惜现在剁手也晚了。

那么总有一种办法可以把 master 上的 commit 复制一份去 develop 上,答案就是 cherry-pick。

使用方法

$ git checkout master
$ git log

commit a2dee88e23ed33c7975f9f26aeb215de0fbd7c28
Author: 陈子云 <chentongta@souche.com>
Date:   Wed Nov 14 11:18:09 2018 +0800

    fix: 修复从模板跳转去其他页面附带参数没有被正常解析的bug。模版新增跳转发送短信的功能

得到 commit id 为 a2dee88e23ed33c7975f9f26aeb215de0fbd7c28,接着切换去 develop 分支操作

$ git checkout develop
$ git cherry-pick ‘a2dee88e23ed33c7975f9f26aeb215de0fbd7c28‘

Finished one cherry-pick.
# On branch dev
# Your branch is ahead of ‘origin/dev‘ by 1 commits.

# 如果有多个 commit,取最前方的 commit id,cherry-pick 后会显示



上面的提示信息告诉我们这个 commit 已经重新提交到了 dev 分支下.

注意, 这个操作也行会报错, 这时需要你手动去合并冲突, 然后重新提交.

如果有多个 commit,取最前方的 commit id,cherry-pick 后会显示

$ git checkout develop
$ git cherry-pick ‘a2dee88e23ed33c7975f9f26aeb215de0fbd7c28‘

On branch develop
You are currently cherry-picking commit 879ccd1.

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

    git commit --allow-empty
    
$ git commit --allow-empty

[develop 0d69c42] fix: 修复从模板跳转去其他页面附带参数没有被正常解析的bug。模版新增跳转发送短信的功能
 Date: Wed Nov 14 11:19:08 2018 +0800

最后 git push

以上是关于Git cherry-pick 复制 commit的主要内容,如果未能解决你的问题,请参考以下文章

Git 场景 :从一个分支cherry-pick多个commit

git cherry-pick 的使用

如何用git reflog和git cherry-pick找回已删除的commit记录

Git 合并多个commit 和 cherry-pick的使用

git 合并某个提交 git cherry-pick

Git 的 cherry-pick 功能