各位码农朋友们一定有碰到过这样的情况:在develop分支上辛辛苦苦撸了一通代码后开发出功能模块A,B,C,这时老板过来说,年青人,我们现在先上线功能模块A,B。你一定心里一万只草泥马奔腾而过,但为了混口饭吃必须得按老板的意思办事啊。

怎么办?一个办法就是,重新建一个分支,然后再把功能模块C回退,留下功能模块A,B。这种做法不是不行,但是有更好的办法,那就是git所提供的cherry-pick功能。

cherry-pick类似于一个定制化的merge,它可以把其它分支上的commit一个个摘下来,合并到当前分支。

废话不多说,直接上实例。

比如我现在有个文件a.c,我在develop分支完成了三个功能模块:feature A,feature B,feature C。如下图:

现在,坑爹的老板只要feature A,feature B,我们现在用cherry-pick命令直接把feature A,feature B的提交合并到master分支里,如下操作:

可以看到,功能模块feature A,feature B已经被合并到master分支里。请注意,合并到master分支里的提交哈希值发生了改变,与原来的不同。

可以看出,cherry-pick命令使用方法很简单,即:

git cherry-pick commitID

刚刚是一个个提交cherry-pick到master分支,但如果有100个commit要合并到master分支呢?总不能这样一个个操作吧?git一样帮你想到了,它提供了一个区间操作方法。具体来讲是这样的:

git cherry-pick commit1..commit100

但是要注意,这是一个左开右闭的操作,也就是说,commit1不会被合并到master分支,而commit100则会。这样的话上面的需求可以如下操作来实现:

注意:上面讲到cherry-pick命令每拣选一个commit就会提交一次生成一个新的commit id。 如果我们想让每个commit 拣选后暂缓提交,等到所有commit都拣选完成后,自己手动commit,应该怎么办呢?答案是用-n 选项:

怎样,是不是很简单?学会了cherry-pick命令妈妈再也不用担心老板时不时的头脑发热了。快扫描下方二维码和良许一起学习更多git神操作!

更多精彩内容,请关注公众号良许Linux,公众内回复1024可免费获得5T技术资料,包括:Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能,等等。公众号内回复进群,邀请您进高手如云技术交流群。


公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

最新文章

  1. make:cc 命令未找到的解决方法
  2. 2-legged oauth & 3-legged oauth
  3. php添加数据到xml文件的例子
  4. 新著作计划:《水利水电工程施工导流 水力计算与.NET编程》
  5. CL.exe的 /D 选项, Preprocessor Macro预处理器宏定义
  6. C#基础--面向对象计算器
  7. js对文章内容进行分页示例代码
  8. PHP 登录完成后如何跳转上一访问页面
  9. Dubbo入门实例--转载
  10. 设置transparent是否多此一举
  11. 【转】来自《轻松scrum之旅》的敏捷开发总结
  12. SQL Server 的内存分类
  13. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'tb_MyInvoices' 中的标识列插入显式值
  14. Spring IOC及AOP学习总结
  15. TensorFlow与主流深度学习框架对比
  16. Oracle update 执行更新操作后的数据恢复
  17. tensorflow(深度学习框架)详细讲解及实战
  18. 使用PerfView监测.NET程序性能(四):折叠,过滤和时间范围选择
  19. 20145335郝昊《网络攻防》Exp9 Web安全基础实践
  20. iOS开发小技巧--富文本字典集合中的Key都是OC中的常量字符串

热门文章

  1. Git的详细使用
  2. google protocol buffer——protobuf的编码原理二
  3. 关于华为服务器 双路E52620安装系统时遇到的问题
  4. vue刷新数组
  5. 沈阳做假证z
  6. C#委托链
  7. Mono集成中使用api获取当前mono 调用堆栈的方法
  8. java初探(1)之秒杀的安全
  9. 04router
  10. Medium