简而言之,cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug。如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit。

以我目前做的项目为例,现在有4个开发者维护着四个分支,以自己的用户名命名,开发出一个特性后定时合并到dev分支。并且规定各自分支不能将合并后的dev分支代码合并回自己分支,以免发生混乱。但是这样就有个问题,比如A开发出一个特性,B的后续特性需要依赖A开发出来的特性,由于B不能合并远程的dev分支,故B是没有办法获取A开发的特性的。

这个时候,cherry-pick就起作用了,假设dev分支上A最近一次提交为hash-1,B就可以在自己分支上执行 git cherry-pick hash-1 来获取A最近一次提交更新的文件,如果没有冲突,B的分支将自动进行一次与A一致的提交,否则进行合并后提交。这时,B就可以使用A开发的特性了。

IntelliJ Idea下的界面

如图所示,在Author那栏,有两行作者名字有个星号,这代表cherry-pick过来的文件的原始作者。在这两次提交的message信息中可以看到当前提交所依赖的原始作者的提交的hash值。

后记

在平常开发中,一定要善于使用Git提供的各种功能,这样有助于提升团队协同开发的效率。俗话说:工欲善其事,必先利其器,就是这个道理。

最后扯一句题外话,网上很多人不屑于使用各种工具,以为自己徒手开发就很牛逼了。个人认为不是这样的,现代程序的一个显著特点就是复杂度高,纵使你技术再好,也是很难单打独斗完成一个完整的项目的。如果不能与其他人很好的合作,及时地出产品或者成果,那么技术本身也就失去了意义。

对于团队合作,我不敢说没有版本控制,项目就一定进行不下去,但可以肯定的是,在版本控制的协助下,团队整体效率会有极大的提高的。

最新文章

  1. 内置函数----整理、例题 、xmin
  2. 模仿$.Callbacks实现
  3. write_chip,read_chip
  4. UIActivityIndicatorView活动控制器的大小改变
  5. sqlite编译
  6. Android开发之InstanceState详解(转)---利用其保存Activity状态
  7. Cookie和Session的原理图
  8. DirectShow使用说明
  9. windows----------Windows10 远程桌面连接失败,报CredSSP加密oracle修正错误解决办法
  10. org.hibernate.MappingException: class com.itheima.domain.Customer.java not found while looking for property: cust_id at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.
  11. 【PAT】B1002 写出这个数
  12. Tensorflow timeline trace
  13. LOJ 6485 LJJ学多项式
  14. Qt 常用类 (4)—— QPoint
  15. 聊天,发朋友圈可以不打字,但是表情怎么能少呢?那么如何用win10自带的微软拼音输入法打出表情呢?
  16. Pycharm新建文件时自动添加基础信息
  17. makfile.am 和makefile.in 的使用
  18. mybatis由浅入深day02_7.3二级缓存
  19. Android性能优化的一些方案
  20. easyui api常用操作

热门文章

  1. 掌握这个Python小技巧,轻松构建cytoscape导入文件
  2. 《Python学习手册》(四)
  3. OpenGL核心技术之Shadow Mapping改进版
  4. NOIP Mayan游戏
  5. [BZOJ2717]迷路的兔子[构造]
  6. share point 2013 部署
  7. spring的AOP动态代理--JDK代理和CGLIB代理区分以及注意事项
  8. P3374 【模板】树状数组 1
  9. 重新认识HBase,Cassandra列存储——本质是还是行存储,只是可以动态改变列(每行对应的数据字段)数量而已,当心不是parquet
  10. 【Hive】数据类型