Git-用 cherry-pick 挑好看的小樱桃

前篇

在此之前,我想问一个问题,你是在接触 Git 多久之后,知道有这个命令的?

我的答案是很久很久之后,这真是一个悲伤的故事。懒,是万恶之源,此话果然不假。

cherry-pick 能干啥?

cherry,中文翻译是樱桃,pick, 中文翻译是采集,挑选。所以,cherry-pick 就是挑选樱桃,git cherry-pick 就是从你的项目文件中找出"樱桃"二字,找到就可以找博主来兑换樱桃了。

以上是开玩笑,写博客呢,干什么,正经点!

cherry-pick 的翻译是择优挑选,使用git cherry-pick命令,可以选择将现有的一个或者多个提交的修改引入当前内容。

那么,什么情况下会有到这么不常见的命令呢?

假设你现在正在开发一个项目,有一个功能分支 feature,开发分支 develop。 feature 有3个提交,分别是 A ,B ,C 。develop 分支只想加入 C 功能, 此时合并操作无法满足,因为直接合并 feature,会将3个提交都合并上,我想合并就只有 C,不要 A,B。此时就需要挑樱桃大法–cherry pick!

具体的做法:

  1. 切换到 develop 分支。
  2. 通过 git log feature,找到 C 的 SHA1 值。
  3. 通过 git cherry-pick <C的SHA1> ,将 C 的修改内容合并到当前内容分支 develop 中。
  4. 若无冲突,过程就已经完成了。如果有冲突,按正常冲突解决流程即可。

cherry-pick 示意图

cherry-pick VS merge, Ready? GO!

从上面简单的小例子上看,我想,小伙伴们,都应该已经对 merge 和 cherry-pick 有了大概的区分,这里做下对比,让大家有个清晰明确的掌握,防止似是而非,以后误操作。


git merge :将两个提交历史合并。
git cherry-pick:将提交对应的内容合并。

这里,非常需要明确的一点,commit 代表的是修改!

例中,提交 C 的内容,就是对比 B 上面做的修改,可能是创建了一个文件,或者修改了一个词语。那么 C 内容就是一个文件的添加,和一个词语的修改。

以提交 C 为结束点的提交历史,实际内容是提交 C 和 C 之前所有的修改。

cherry-pick 操作的对象就是 commit。
merge 操作的对象就是 commit history。

所以,使用的时候,你要知道,你想要的什么。

博主邀请你参加挑樱桃游戏

光说不练假把式,现在写个小 demo 测试一下。

  1. 创建一个空文件夹 GitDemo,git init初始化。
  2. 随便创建一个文件,完成初次提交,创建 master 分支。
  3. 创建并切换 develop 分支,创建个提交,每一个提交中创建一个文件,方便测试。

具体命令如下:

// 切换到GitDemo目录下,并初始化Git
cd .../GitDemo  
git init  //创建初次提交,创建 master 分支
touch cherry-pick.txt
git add .
git commit -m '创建cherry-pick文件,初次提交'  //创建并切换到 develop 分支,创建提交“樱桃1号”
git checkout -b develop
touch 樱桃1号.txt
git add .
git commit -m "创建樱桃1号文件"//创建提交“樱桃2号”
touch 樱桃2号.txt
git add .
git commit -m "创建樱桃2号文件"//创建提交“樱桃3号”
touch 樱桃3号.txt
git add .
git commit -m "创建樱桃3号文件"

以上,测试场景构建完毕。现在用 git log develop 查看 develop 的提交历史如下:

现在,仔细瞅瞅,你最喜欢几号樱桃,喜欢哪个,就挑哪个。我喜欢3号,从上图看到3号的 SHA1 值是90279a36a8972034e922b65598adfc0c3e13679b,使用前几位就足够了。

//切换到 master 分支
git checkout master
//挑选3号樱桃
git cherry-pick 90279a36

挑选成功,通过 ls 命令,看到成功加入樱桃3号.txt

挑樱桃游戏成功!

另外,需要说明的是,cherry-pick 到 master 的樱桃3号,事实上不是真的 3 号,是 3 号的复制品, 两者的 SHA1 值是不同的,由此可确认这是两个提交。

了解更多的 cherry-pick

理解 cherry-pick 操作的本质,之后,再看其他的命令,就毫无压力了。全部命令详看官方文档,这里我给出几个比较常用的:

git cherry-pick <commits>

挑选多个提交合并,提交之间用空格相隔。例如,想挑选1号和3号的,就可以用git cherry-pick 4d2951 e4cdff9命令一步到位了。

git cherry-pick <start-commit>..<end-commit>

挑选一个范围的多个提交合并,但是这个语法对应操作区别是左开右闭,不包含start-commit。另外要注意两个commit 之间要求有连续关系的,并且前者要在后者之前,顺序不能颠倒。

git cherry-pick <start-commit>^..<end-commit>

这个和上面一样,区别就是加了一个^符号,就变成闭区间了,包含 start-commit。

git cherry-pick <branch name>

挑选 branch 最顶端的提交。例如挑选 3 号樱桃可以用git cherry-pick develop

git cherry-pick --continue  //继续下个操作
git cherry-pick --quit //退出
git cherry-pick --abort //停止本次操作

以上是关于 cherry-pick 操作控制命令,当 cherry-pick 多个提交时,假设遇到冲突,--continue继续进行下个,--quit结束 cherry-pick 操作,但是不会影响冲突之前多个提交中已经成功的,--abort直接打回原形,回到 cherry-pick 前的状态,包括多个提交中已经成功的。

尾篇

对于这个命令来说,理解 commit 的本质是修改很关键。好了,下篇博客见~,这个3月要将当初计划的 Git 系列博客补完,Fighting!

欢迎订阅我的Git系列文章

  • 01. 请回答:Git是什么?
  • 02. Git常用命令一日游活动
  • 03. Git三大特色之Branch(分支)
  • 04. Git三大特色之Stage(暂存区)
  • 05. Git三大特色之WorkFlow(工作流)
  • 06. Git-你好, HEAD 同学
  • 07. Git-用 cherry-pick 挑好看的小樱桃
  • 08. Git-rebase 黑魔法之打造完美的线性历史
  • 09. Git-rebase 黑魔法之打磨 commit 颗粒度
  • 10. Git-少年,你想学回滚吗?想撤销文件修改吗?
  • 11. Git-移动记录仪 & 贴心小棉袄 reflog
  • 12. Git-丢失的 commit 是真的消失了吗?
  • 13. Git-叹为观止的 log 命令 & 其参数
  • 14. Git-送娃子们一本关于如何自学 Git 的秘籍

欢迎关注个人微信公众号「浅浅同学的开发笔记」,最新的博客,好玩的事情,都会在上面分享,期待与你共同成长。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15529.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亲测10月最新影视流量主小程序源码+卡密系统

正文: 这是一款最新影视小程序&#xff0c;支持官解和卡密系统&#xff0c;也有仿封系统&#xff0c;独立API后台然后对接的苹果cms&#xff0c;亲测可以使用&#xff0c;搭建也比较简单。 只搭建了后台&#xff0c;前台换接口看教程上写的还得再搭建个苹果CMS&#xff0c;就…

微猫恋爱聊妹术V2 4.1.0 小程序源码-多开版-附安装教程

微猫恋爱聊妹术V2 4.1.0 小程序源码-多开版-附安装教程 源码介绍&#xff1a; 一.后台&#xff1a; 1.全新独立后台大更新&#xff0c;让操作更简单&#xff01; 2.新增智能客服消息功能&#xff1a; a.关键字客服消息支持多信息触发&#xff08;已达官方最多限制可同时触发…

2021最火南风表情包最新微信小程序源码+带采集+流量主+前后端完整版+免费下载+附安装教程无加密源码

源码介绍&#xff1a; 南风表情包微信小程序源码&#xff0c;网传最火表情包小程序源码&#xff0c;带有独立版完整后台 API、小程序前端&#xff0c;并附带安装搭建说明。最近很火的表情包小程序源码&#xff0c;亲测完整无错&#xff0c;有大量的数据。搭建即可使用。话不多…

最新表情包小程序+前后端去授权版/最火表情包小程序源码

最新表情包小程序前后端去授权版&#xff0c;最火表情小程序源码&#xff0c;本次分享的是一套二开的小程序前端&#xff0c;新增了举牌表情生成、去掉了隐藏的授权以及一些BUG修复&#xff0c;本站亲测完美可用。 具体教程见包内说明&#xff0c;以下是亲测截图&#xff1a; …

贪心 135. 分发糖果

135. 分发糖果 难度困难1086 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&am…

抖音快手微信QQ壁纸小程序表情包小程序流量主广告源码搭建详细教程

​ 切记&#xff01;不要自作聪明&#xff01; 请仔细通读本文档再安装&#xff0c;不然报错会让你抓狂&#xff01;即使你对PHP非常熟悉&#xff0c;对uniapp非常熟悉&#xff0c;也必须通读文档&#xff0c;严格遵守文档的所写的&#xff0c;不然100%有报错&#xff0c;绝无…

【精选】表情包斗图小程序(可引流,开通流量主,权益外卖cps,带pc后台管理)

牛云表情包斗图小程序&#xff0c;流量主变现&#xff0c;外卖cps权益变现&#xff0c;uniCloud云开发无需购买服务器和域名&#xff0c;助力每一位内容创业者。 技术优势 基于 uniapp uniCloud 研发&#xff0c;无需购买服务器和域名&#xff0c;uniCloud 是 DCloud 联合阿…

小狐狸ChatGPT付费创作系统1.57独立开源版 + 小程序VUE前端+APP端 最全安装配置教程

小狐狸GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序&#xff0c;是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。播播资源技术小编经过系统测试系统完全开源&#xff0c;即可拥有自己的GPT&#xff01;整体测试下来非常完美&#xff0c;可以说小狐…

微信点餐小程序项目 --- 干饭人联盟(开源、免费)

参考项目。做了一点改动和完善。 项目源码。还有具体配置方法、sql脚本文件、API接口开发文档、数据库详细说明。 ①技术栈&#xff1a; 前端&#xff1a; 微信小程序原生框架 weui 后端&#xff1a;node.jsexpress 数据库&#xff1a;mysql ②效果&#xff1a; ③说明 1…

ChatGPT被淘汰了?Auto-GPT到底有多强

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。 说Auto-GPT淘汰了ChatGPT了&#xff0c;显然是营销文案里面的标题党。毕竟它还是基于ChatGPT的API&#xff0c;某种意义只是基于ChatGPT能力的应用。但最近&#xff0c;Auto…

ChatGPT基础组件Transformer的代码实现(纯净版Transformer实现)

最近ChatGPT大火&#xff0c;其实去年11月份就备受关注了&#xff0c;最近火出圈了&#xff0c;还是这家伙太恐怖了&#xff0c;未来重复性的工作很危险。回归主题&#xff0c;ChatGPT就是由无数个&#xff08;具体也不知道多少个&#xff0c;哈哈哈哈&#xff09;Transformer语…

比特币将成为人工智能的首选货币

在这篇文章中&#xff0c;Arthur Hayes将阐述为什么中本聪的创造将成为人工智能的首选货币。我将把我的论点作为一系列逻辑结论来提出&#xff0c;这些结论相互基础&#xff0c;以「证明」人工智能将选择比特币作为其经济行为的计价货币。 原文作者&#xff1a;Arthur Hayes 原…

马斯克 xAI 誓师大会,2029实现AGI!12 人创始天团揭秘 xAI 终极目标

今天马斯克和 xAI12 人创始团队开了一个誓师大会&#xff0c;详述了公司的远景目标和运营方向&#xff0c;希望在 2029 年实现 AGI。 今天马院士「开源」了 xAI 的第一次重要会议&#xff01; 擅长在公司使命上「画大饼」的马院士&#xff0c;在这次会议上和创始团队讨论了很多…

为什么越来越多的网工运维_测试转行网络安全?

最近越来越多的网工运维小伙伴都在吐槽&#xff1a;干网工、运维多年&#xff0c;薪资还是5.6K&#xff0c;技术也遇瓶颈上不去&#xff0c;考虑转岗或者转行。其中大部分的网工运维小伙伴们纷纷瞄准了高薪高前景的网络安全工程师岗位 网络安全是怎样的岗位&#xff1f; 人才…

博泰应宜伦:把Vision Pro放大二十倍,就是未来汽车的终极形态

作者 | Amy 编辑 | 德新 新能源是上半场&#xff0c;智能化是下半场。 而随着智能汽车发展&#xff0c;智能座舱也不断革新&#xff0c;过去智能座舱的各项功能全面开花&#xff0c;竞争愈演愈烈&#xff0c;未来的座舱将如何被定义&#xff1f; 6月15日&#xff0c;博泰车联…

python爬虫入门

基础回顾 使用函数, 先导入, 直接点方法名使用 import math m math.log10(100) print(m)python 交互模式 input输入示例 age int(input("请输入年龄")) age 1 print(age)if else 的使用 和java一样, 只是不加括号, else if 阉割成了 elif 与或非 java : &am…

AI落地:儿童节贺卡

昨天有个朋友Lisa找到我&#xff0c;她是幼儿园的老师&#xff0c;看到我最近搞了个爱落地星球&#xff0c;在研究各行各业AI落地的事情&#xff0c;问我能不能用AI帮她写一百多张贺卡。 说起来写贺卡&#xff0c;我只会写“节日快乐”。现在有了ChatGPT&#xff0c;那就大不一…

Web3 的大规模普及和飞轮效应

点击上方“小强的进阶之路”&#xff0c;选择“星标”公众号 优质文章&#xff0c;及时送达 预计阅读时间: 5分钟 “iPhone 时刻”是指具有颠覆性意义的技术或产品在推出后所引发的一系列重大变革。像苹果公司的iPhone一样&#xff0c;Web3也可能在某个时刻产生显著的变革和重大…

AIGC第一波裁员已至

转自&#xff1a;51CTO技术栈 作者 | 徐杰承 审校 | 云昭 让所有人都没想到的是&#xff0c;正值人工智能之火烧遍全球之时&#xff0c;一家估值15亿美元&#xff0c;曾一度被多家媒体评价为2022年成长最快的AI独角兽的企业却突然公开宣布裁员。 7月12日早上&#xff0c;美国AI…

OAuth 2.0(四):手把手带你写代码接入 OAuth 2.0 授权服务

今天我们开始落地写代码&#xff0c;基于橘长之前接入过农业银行的授权&#xff0c;今天首先作为第三方服务来和大家分享「 手把手接入 OAuth 2.0 授权服务 」。 一、业务背景 近期团队帮银行做了一个互动营销活动&#xff0c;活动入口在行方的 App 上&#xff0c;当用户在行…