• 首页
  • 开发工具
  • git cherry-pick 把提交到A分支的部分commit 再提交到B分支上

git cherry-pick 把提交到A分支的部分commit 再提交到B分支上

关于git 下操作分支的更多博文请本站搜索 "git" 

上一篇博文介绍了git删除远程分支或重命名分支 

这一篇分享一个git 下很有用的指令 cherry-pick


应用环境:

有一个主分支 master (这个分支只是用来合并其他通过测试的分支,及上线打版本)

另一个分支 dev (开发提交的分支)


当你通过一番挣扎终于搞定一个bug,顺手提交到 git 服务器,心里一阵暗爽. 这时发现你当前所在的分支是 master !!!

这个分支不是开发者用来提交代码的,可惜现在剁手也晚了.


怎么办?

于是你想到,合并分支.

合并分支通常会带来各种各样的冲突,而且当前 dev 分支还在开发中,没有进过测试,所以就算合并也是 dev 合并 master 分支.但是车根本太大.

这时最好的解决方案就是用 cherry-pick


使用方法:

  1. 先切换到刚才你误操作的分支下 master 

zhangzhi@moke:~/code/demo$git checkout master

2.然后找到你的提交信息

zhangzhi@moke:~/code/demo$git log
commit 641ebe8c7eaa56479e81f03358118e464a49de89
Author: zhangzhi <zzhi.net@gmail.com>
Date:   Wed Jul 22 18:12:30 2015 +0800

    bug fixed!

我们从提交日志中找到 commitID  

641ebe8c7eaa56479e81f03358118e464a49de89

3. 切换到 dev 分支下

zhangzhi@moke:~/code/demo$git checkout dev

4. 把master 下的 bug fixed! 提交重新提交的 dev 分支下

zhangzhi@moke:~/code/demo$git cherry-pick '641ebe8c7eaa56479e81f03358118e464a49de89'
Finished one cherry-pick.
# On branch dev
# Your branch is ahead of 'origin/dev' by 1 commits.

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

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

回到顶部