文档章节

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

Common1140
 Common1140
发布于 2017/02/08 16:16
字数 744
阅读 520
收藏 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
粉丝 14
博文 13
码字总数 13069
作品 0
广州
程序员
加载中

评论(5)

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

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

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

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

蔡少东
2016/07/10
89
0
git合并分支上指定的commit

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

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

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

鉴客
05/11
0
0
聊聊 Git 「改变历史」

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

冉四夕
2017/10/09
0
0
git cherry-pick使用小结

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

u011534057
2017/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

收邮件 下载附件

uses IdMessage, IdMessageParts, IdAttachment, IdGlobalProtocols, ...;procedure SaveAttachmentsFromFile(FileName: String)var IdMessage: TIdMessage; MsgPart: Ti......

vga
9分钟前
0
0
shiro 标签不能在html中应用的解决方案

shiro提供jsp标签,html属于静态页面,没办法引入。解决办法: 1.把html换成jsp。 2.用js判断: 原理参照:https://blog.csdn.net/fusugongzi/article/details/75221407 实现的方式大同小异,...

地瓜2013
10分钟前
0
0
(十八) 整合spring cloud云架构 -后台管理基础功能简介

1. 项目介绍 鸿鹄云开发平台是一个大型分布式、微服务、云架构、面向企业的 JavaEE体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技...

SpringCloud关注者
19分钟前
5
3
Flask 开发填坑

插件的选择: flask-security 真的是个鸡肋啊。自带的页面,好丑。还不如用flask-login来做呢。

pearma
今天
4
0
讲述下 :LVM逻辑卷管理遇到的问题

LVM学习逻辑卷管理创建逻辑卷遇到的问题 1 实验环境 系统 内核 发行版本 CentOS 2.6.32-754.2.1.el6.x86_64 CentOS release 6.10 (Final) 由于是最小化安装没有xfs命令,yum安装如下包支持此...

linuxprobe16
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部