文档章节

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

Common1140
 Common1140
发布于 2017/02/08 16:16
字数 744
阅读 518
收藏 40
点赞 2
评论 5

在实际的项目开发中(使用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
粉丝 12
博文 12
码字总数 10845
作品 0
广州
程序员
加载中

评论(5)

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

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

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

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

蔡少东 ⋅ 2016/07/10 ⋅ 0

git cherry-pick 小结

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

鉴客 ⋅ 05/11 ⋅ 0

聊聊 Git 「改变历史」

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

冉四夕 ⋅ 2017/10/09 ⋅ 0

git cherry-pick使用小结

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

u011534057 ⋅ 2017/08/23 ⋅ 0

Git常用指令记录

简介 git有漂亮的WEB界面 非常自由的本地commit(不用担心是否影响到他/她人)操作稍微复杂了一点点。 git属于分布式的版本管理工具。每个人都有全部的提交历史。 通过git push 和 git pull...

go-skyblue ⋅ 2015/12/16 ⋅ 0

github上fork别人的代码之后,如何保持和原作者同步的更新

1.从自己fork之后的版本库clone $ git clone -o chucklu https://github.com/chucklu/Hearthstone-Deck-Tracker.git 参数说明: -o <name> Instead of using the remote name origin to keep......

squanchao ⋅ 2016/12/15 ⋅ 0

svn与git的快速参考

Svn与Git使用快速参考 (Quick Reference) 作者:孙圣翔 时间:2015-08-05 注:公司代码不要上传到github,oschina等外部网站 资料参考: svn: https://zh.wikipedia.org/zh-cn/Subversion...

go-skyblue ⋅ 2015/08/05 ⋅ 0

使用git 之三 分支(学习笔记三)

分支 git branch new //创建新分支 直接合并(merge) git checkout -b alternate master //直接创建alternate分支并到该分支上去 ;在alternate分支上新建一个gti add about.html然后git commi...

独钓渔 ⋅ 2013/07/05 ⋅ 0

git cherry-pick. 如何把已经提交的commit, 从一个分支放到另一个分支

实际问题: 在本地 master 分支上做了一个commit ( 38361a68138140827b31b72f8bbfd88b3705d77a ) , 如何把它放到 本地 old_cc 分支上? 办法之一: 使用 cherry-pick. 根据git 文档: Appl...

carlos ⋅ 2014/11/25 ⋅ 0

10 个技巧促使你的 Git 的技能上一个台阶 —— SitePoint

摘要:最近,我们发布了一些教程促使你了解 Git 基础知识和在团队环境中使用 Git。谈论的指令已经足够帮助一个开发者在 Git 世界中生存。在这次教程中,我们尝试如何在有效的时间内充分掌握提...

众成翻译 ⋅ 01/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 5分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 12分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 16分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 18分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 21分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 25分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 38分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 57分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部