文档章节

一个可以提高开发效率的Git命令-- Cherry-Pick

Common1140
 Common1140
发布于 2017/02/08 16:16
字数 744
阅读 529
收藏 40

在实际的项目开发中(使用Git版本控制),在所难免会遇到没有切换分支开发、需要在另一个分支修改bug然后合并到当前分支的情况。之前遇到这种第一反应就是将分支合并过去来解决问题。如果你那些提交当中也穿插了其他人的提交而且他们的提交不可以合并到另一个分支,那么使用分支的合并将明显变得困难。下面分享给大家一个非常好用Git的命令Cherry-Pick来处理这些情况,从而提高开发的效率。

What is Cherry-Pick ?

git Cherry-Pick命令可以选择某一个分支中的一个或几个commit(s)来进行操作。你可以理解merge的个性定制版本,哈哈~~

How use Cherry-Pick

假设我们有两个分支,一个是master分支,一个是从master分支Git Commit Log为“修改侧栏内容”新建出来的dev分支。

master分支

dev分支

现在需要将master分支下的git Log commit "修改侧栏的点击跳转方式"合并到dev分支。也许你可能想到将这个Log上面的Logs先Revert,然后再将master分支合并到dev分支。下面记录一下怎么使用Cherry-Pick来合并一个或者多个提交。

  • 先将当前分支切换到dev分支。

    切换到dev分支

  • 打开master的所有提交Log,找到需要合并到dev分支的提交,这里我们找到“修改侧栏的点击跳转方式”这个提交,然后点击右击选择菜单弹出Cherry-Pick命令。

  • 接着,IDE会弹出熟悉的提交提示框架,这时我们点击Commit或者Commit and Push...就可以将需要合并的提交合并到dev分支了。 这里我选择了Commit and Push...

查看dev分支的Log可以看到那个提交已合并到dev。

Note

当你需要将某些提交合并到另一分支的时候,一定一定一定要按提交的顺序进行合并,不然会导致某些文件发生冲突。这也是我实际项目中踩过的坑。

End

  1. 当你的需求还没有完成的时候,其他人应该切换到另一分支开发的时候,你可以先在当前分支继续开发完,然后再选择Cherry-Pick命令合并过去就可以了。
  2. 当你需要将某个人的commits合并到另一开分时候,可以选择Cherry-Pick命令。(在实际的项目开发中,在所难免有人会提交错分支)
  3. 当你切换到某条分支修改Bug后,需要将修改提交合并另一分支,可以选择Cherry-Pick命令。

这是一个非常好用、有趣的命令,它提高了我的开发效率~~在此,分享给大伙,希望可以帮忙到更多的人! 点击关注我

© 著作权归作者所有

共有 人打赏支持
Common1140
粉丝 15
博文 13
码字总数 13069
作品 0
广州
程序员
私信 提问
加载中

评论(5)

Liuxd
Liuxd
这个命令我一般是在处理比较复杂的情况时用到。提高效率方面到是没想过。
jeiofw
jeiofw
不错的命令,我们项目组也一般先git revert,然后再进行合并
mark35
mark35
有时候不能整个分支合并,cherry-pick在跨分支甚至跨库进行单个提交应用很有用。
Common1140
Common1140

引用来自“万事通”的评论

非常实用强大的指令😊
是的!然而,在实际项目的开发当中,比较少人使用到这个命令。例如在我的团队里,也没有人知道有这个命令。😘
万事通
万事通
非常实用强大的指令😊
git 不可不学

Git是协作开发中必不可少的,简单的一个人一个分支没有太多需要掌握的,但如果是大型团队,几十个功能同时开发,如何协同良好的使用Git成为了项目顺利进展的基石。如果你即将或刚进入这种大型...

蔡少东
2016/07/10
89
0
聊聊 Git 「改变历史」

非常感谢你为mint-ui 修复了这个 issue。不过你的 commit 信息能修改成如下格式吗?「issue 666: Any message about this issue」。 当我兴高采烈向Element 提交 PR 的时候,维护者告诉我你能...

冉四夕
2017/10/09
0
0
git合并分支上指定的commit

merge 能够胜任平常大部分的合并需求。但也会遇到某些特殊的情况,例如正在开发一个新的功能,线上说有一个紧急的bug要修复。bug修好了但并不像把仍在开发的新功能代码也提交到线上去。这时候...

安小乐
2018/09/13
0
0
git cherry-pick 小结

git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致...

鉴客
2018/05/11
332
0
git cherry-pick使用小结

git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致...

u011534057
2017/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Map的遍历方式

import java.util.*; public class a_21 { public static void main(String[] args) { Map<Integer,Integer> map= new HashMap<Integer, Integer>(); for(int i=0;i<6;i++) ......

南桥北木
30分钟前
0
0
总结:线程间频繁切换为什么耗费资源?

因为线程切换的时候,CPU需要将此线程的所有执行状态保存起来,如线程编号,执行到的位置等,然后再去执行其它线程。

浮躁的码农
今天
3
0
PHP版本高于5.5时,curl文件上传必须使用CurlFile对象

坑了我一天,之前@的方法各种上传不成功文件。都怀疑服务端有bug了。

叫我哀木涕
今天
1
0
js算法总结

数列求和 等差数列求和 function sum(a0,d,n){//a0->首项,d->公差,n->项数//(首项+末项)*项数/2return (a0+(a0+(n-1)*d))*n/2;} 等比数列求和 function sum(a0,q,n){//a0->首项,q......

祖达
今天
4
0
小白?转型?毕业生?外行学习快速入行大数据开发指南

这篇文章中,本文将针对三种不同的、想要进入数据科学领域的人群,给出自己的经验,帮助他们迅速有效入行。 虽然没有适合每个人的万能解决方案,但这三类建议值得想转行的你一看。 第1类:新...

董黎明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部