git 一个可以提高开发效率的命令:cherry-pick
各位码农朋友们一定有碰到过这样的个高开情况:在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命令妈妈再也不用担心老板时不时的头脑发热了。
本文授权转载自公众号「良许Linux」。良许,世界500强外企Linux开发工程师,公众号里分享大量Linux干货,免费信息发布网欢迎关注!

本文地址:http://www.bzuk.cn/html/371d31799311.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
相关文章
樱花牌洗衣机的卓越性能和便捷功能(为您打造更舒适的洗衣体验)
物联网信任基础有多重要
破解gh-ost变更导致MySQL表膨胀之谜
推动DevOps卓越:为您的DevOps团队实施服务水平目标(SLOs)
目前 Opera 提供了针对 Ubuntu 的 .deb 文件(官方下载地址 http://opera.cn.uptodown.com/ubuntu)。Debian的.deb文件应该也可以工作。 Opera 提供了两种基本安装类型:使用静态库和共享库。它们的区别是 Opera 是如何链接到 Qt 库的。在共享库版本中,Opera 使用你机器上的 Qt,而静态库的版本则使用 Opera 内建的 Qt。静态库版本下载的体积更大,在菜单和文件选择器使用了点阵字库(没有抗锯齿功能)。动态的编译版本集成到系统中,这样它使用你其它 Qt 应用程序相同的抗锯齿设置。静态的编译版本在浏览器窗口和其它用户界面还是支持抗锯齿功能。静态版本可能更快和更稳定,至少 Opera 的爱好者已经体验了很长时间。你可以都试试,因为在 Ubuntu 中安装和卸载软件相当容易。 请访问Opera 官方下载http://opera.cn.uptodown.com/ubuntu网站,选择你需要的包并选择一个下载镜像站点。 你也可以访问Opera FTP或网站以获得最新的版本。 保存你下载的文件 安装Opera打开一个终端,转移到你放置下载的deb文件的位置,输入: sudo dpkg -i opera.deb注:Tab 键能够自动帮助你输入较长的复杂的文件名。前提是你在正确的目录中,只要输入“opera”并在上述命令说明的地方按下键盘上的 Tab,Ubuntu 会自动帮助你输入完整的文件名。 安装Opera需要一点时间。 假如你得到一些信息显示依赖的包未安装,请输入: sudo apt-get -f installapt 将会安装这些缺失的包。假如需要最新版,需要自己下载其中opera10.63更新,修复了输入法问题,可以正常连续输入文字了。 http://bbs.operachina.com/viewtopic.php f=78&t=89346 下载地址:http://snapshot.opera.com/unix/22184_10.63-6447/替换方案——通过 apt-get 安装 Opera将下列信息添加到你的 apt sources.list(/etc/apt/sources.list) 文件: deb http://deb.opera.com/opera/ pool/non-free 0 opera或者,你不需要最新的版本可以选择稳定的版本: deb http://deb.opera.com/opera/ stable non-free.修改后保存 sources.list 文件,然后在终端中输入: sudo apt-get update接下来: sudo apt-get install opera所有需要的依赖关系将会被处理,并且你不需要像上面所述创建桌面文件,这些都自动完成了。(译注:事实似乎并非如此,建议你将本文“Ubuntu 化 Opera(完成安装)”的部分进行一遍。) 另一个好处是你不需要持续关注未来的升级,它会自动完成。 在更高版本的opera, 他会自动建立一个文件 /etc/apt/sources.list.d/opera.list , 就像 google-chrome会建立 google-chrome.list 一样, 这个文件就是源信息. 可能在opera 10 测试版本,这个文件名会是 /etc/apt/sources.list.d/opera , 只要手工添加 .list 后缀就行. 假如提示只有 lenny , 只要在文件中找到 opera-beta字样, 改为: deb http://deb.opera.com/opera-beta/ lenny non-free就行. 以后只要 sudo apt-get update ; sudo apt-get install opera 或 apt-get upgrade 就能升级他.很方便. 设置 Opera 为默认浏览器要将 Opera 设置为系统默认的浏览器和邮件客户端,请这么做: 进入“系统 ->首选项 ->首选应用程序” 在“Web 浏览器”标签页选择“自定义”并输入: opera -newpage %s在“邮件阅读器”标签页选择“自定义”并输入: opera -newmail %s启动浏览器你可以通过“应用程序 ->Internet ->Opera”启动这个非常棒的浏览器了。ubuntu里的opera设置一首先,打开opera的 工具——首选项——高级——内容—— 打开 插件选项 ——更改路径,去掉 火狐的插件文件夹的勾。 一、flash插件 1.到Adobe网站(http://get.adobe.com/flashplayer/)下载flashplayer的插件,选择下载tar.gz的那个; 2.解压后,你会发现目录中有一个libflashplayer.so的文件(不用理那个脚本,我们不安装); 3.关闭Opera,把这个libflahsplayer.so放到你的Opera插件目录中,比如/usr/lib/opera/plugins/。假如不知道有哪些插件目录,在Opera中首选项->高级->内容->插件选项,弹出的窗口下方就是你现有的插件路径。当然你也可更改添加路径,但务必保证libflahsplayer.so文件放在现有的的路径中; 4.重新开启Opera,去一些网站测试一下吧:新浪、本友会。假如看到flash播放的内容,那就说明flash插件安装成功。 PS:假如你发现还是无法播放flash,情仔细检查你的插件路径是否正确;或者在Opera中按F12,查看是否开启了插件(Enable plug-ins)。假如你安装的是ubuntu系统,那么可以下载deb格式的那个,直接关闭opera,双击运行就ok了。 二、Opera之在线影音 将附件目录中的所有10个文件(5个*.so、5个*.xpt)拷到Opera的插件目录。比如/usr/local/opera/lib/opera/plugins。注意这个路径必须在Opera的可用插件路径中。 我们会发现,无论是火狐还是opera,在百度mp3那里试听歌曲时,假如离开页面歌曲就暂停了,这个情况,其实也很好解决,只要在播放器上 右击 选择配置——并 去掉 离开窗口 暂时播放 前面的勾就搞定了。也就是最后的一个选项。
数据可观测性:通过可靠的数据实践获得更好的洞察
朝鲜黑客组织 Kimsuky 利用 ChatGPT 伪造军人证件实施新型攻击
面试官:系统重构,旧库数据怎样平滑地迁到新库?
热门文章
- 1电脑系统网络错误的解决方法(如何快速修复电脑系统网络错误问题)
- 2FastAPI 实战秘籍:从零构建高性能 API -数据库篇
- 3从核心到边缘,开启AI时代的云基础设施新范式
- 4智能建筑的机遇与挑战!
- 5假如你想要使用多个Linux发行版,你没有那么多的选择。你要么安装到你的物理机或虚拟机中,要么以live模式从ISO文件启动。第二个选择,对硬盘空间需求较小,只是有点麻烦,因为你需要将ISO文件写入到U盘或CD/DVD中来启动。不过,这里还有另外一个可选的折中方案:把ISO镜像放在硬盘中,然后以live模式来启动。该方案比完全安装更省空间,而且功能也完备,这对于缓慢的虚拟机而言是个不错的替代方案。下面我将介绍怎样使用流行的Grub启动加载器来实现该方案。很明显,你将需要使用到Grub,这是几乎所有现代Linux发行版都使用的。你也需要你所想用的Linux版本的ISO文件,将它下载到本地磁盘。最后,你需要知道启动分区在哪里,并怎样在Grub中描述。对于此,请使用以下命令:复制代码代码如下:# fdisk -l 带有‘*’的就是启动分区。对于我,就是/dev/sda1,用Grub语言描述就是(hd0,1)。作为参考,sda2就是(hd0,2),sdb1就是(hd1,1),以此类推。(你明白了吧。)我们需要编辑什么?首先,打开/etc/default/grub并检查以下行:复制代码代码如下:#GRUB_HIDDEN_TIMEOUT=0需要在此行前添加‘#’进行注释。保存,然后打开/etc/grub.d/40_custom。在该文件中,你将添加启动到ISO的参数。结构如下:复制代码代码如下: menuentry [Entrys title in the grub screen] { set isofile=[path to ISO file] loopback loop [boot partition in Grub language]$isofile [some specific] arguments }例如,假如你想要从ISO文件启动Ubuntu,那么你就是想要添加如下行到40_custom文件:复制代码代码如下:menuentry Ubuntu 14.04 (LTS) Live Desktop amd64 { set isofile=/boot/ubuntu-14.04-desktop-amd64.iso loopback loop (hd0,1)$isofile linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash initrd (loop)/casper/initrd.lz } 假如你想要启动Gparted:复制代码代码如下:menuentry GParted Live amd64 { set isofile=/boot/gparted-live-0.18.0-2-amd64.iso loopback loop (hd0,1)$isofile loopback loop $isofile linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia toram=filesystem.squashfs findiso=${isofile} initrd (loop)/live/initrd.img }或者甚至是Fedora:复制代码代码如下:menuentry Fedora 20 Live Desktop x86_64 { set isofile=/boot/Fedora-Live-Desktop-x86_64-20-1.iso loopback loop (hd0,1)$isofile loopback loop $isofile linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=Fedora-Live-Desktop-x86_64-20-1 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=${isofile} initrd (loop)/isolinux/initrd0.img }注意,参数可根据发行版进行修改。幸运的是,有许多地方你可以查阅到。我喜欢这个发行版,但是还有很多其它的发行版你可以启动。同时,请注意你放置ISO文件的地方。假如你的家目录被加密或者无法被访问到,你可能更喜欢将这些文件放到像例子中的启动分区。但是,请首先确保启动分区有足够的空间。最后,不要忘了保存40_custom文件并使用以下命令来更新grub:复制代码代码如下: # sudo update-grub 以便在下次启动时看到修改。接下来做什么?想要更多东西?好吧,那就修改下参数来玩玩。你可以启动一个ISO文件,并让它持续做一些事情。例如,假如你是个彻头彻尾的妄想症患者,想要有个可以快速清除硬盘的选项,那么可以使用DBAN来进行一些设置。现在,真的要当心啊,因为此设置会清除你的硬盘,而且在启动时也没有恢复选项:复制代码代码如下: menuentry Dariks Boot and Nuke { set isofile=/boot/dban.iso loopback loop (hd0,1)$isofile linux (loop)/dban.bzi nuke=dwipe silent }另外一个选择复制代码代码如下:menuentry Dariks Boot and Nuke { set isofile=/boot/dban.iso loopback loop (hd0,1)$isofile linux (loop)/dban.bzi }可以显示DBAN选项,让你选择清除驱动器。当心,因为它仍然十分危险。小结一下,对于ISO文件和Grub有很多事情可做:从快速live会话到一键毁灭,都可以满足你。之后,你也可以试试启动一些针对隐私方面的发行版,如Tails。
- 6LTE-M如何交付未来的物联网
- 7物联网如何在制造过程中发挥关键作用
- 8智能建筑的机遇与挑战!
- 9苹果6版本10.2.1的功能和优势(探索苹果6版本10.2.1的卓越表现)
- 10物联网和大数据解决方案如何改变数字医疗行业
- 11麻省理工学院使用物联网技术进行无监督物理治疗
- 1250 条 MySQL 常用命令汇总,入门必学!
全站热门
热门文章
- 1华硕灵耀3(颠覆传统设计,突破性能瓶颈,华硕灵耀3为你带来全新体验)
- 2AISURU 僵尸网络:从破纪录 DDoS 攻击到住宅代理帝国的演变
- 3卫星物联网:物联网连接的新模式
- 4中国工商银行李逸帆:平台工程能更好地驱动DevOps推进
- 5大家好,本教程将学习如何在 ubuntu 15.04 上面安装 puppet,它可以用来管理你的服务器基础环境。puppet 是由 puppet 实验室Puppet Labs开发并维护的一款开源的配置管理软件,它能够帮我们自动化供给、配置和管理服务器的基础环境。不管我们管理的是几个服务器还是数以千计的计算机组成的业务报表体系,puppet 都能够使管理员从繁琐的手动配置调整中解放出来,腾出时间和精力去提系统的升整体效率。它能够确保所有自动化流程作业的一致性、可靠性以及稳定性。它让管理员和开发者更紧密的联系在一起,使开发者更容易产出付出设计良好、简洁清晰的代码。puppet 提供了配置管理和数据中心自动化的两个解决方案。这两个解决方案分别是 puppet 开源版 和 puppet 企业版。puppet 开源版以 Apache 2.0 许可证发布,它是一个非常灵活、可定制的解决方案,设置初衷是帮助管理员去完成那些重复性操作工作。pupprt 企业版是一个全平台复杂 IT 环境下的成熟解决方案,它除了拥有开源版本所有优势以外还有移动端 apps、只有商业版才有的加强支持,以及模块化和集成管理等。Puppet 使用 SSL 证书来认证主控服务器与代理节点之间的通信。本教程将要介绍如何在运行 ubuntu 15.04 的主控服务器和代理节点上面安装开源版的 puppet。在这里,我们用一台服务器做主控服务器master,管理和控制剩余的当作 puppet 代理节点agent node的服务器,这些代理节点将依据主控服务器来进行配置。在 ubuntu 15.04 只需要简单的几步就能安装配置好 puppet,用它来管理我们的服务器基础环境非常的方便。(LCTT 译注:puppet 采用 C/S 架构,所以必须有至少有一台作为服务器,其他作为客户端处理)复制代码代码如下:注意,puppet 主控服务器必使用 8140 端口来运行,所以请务必保证开启8140端口。2. 用 NTP 更新时间复制代码代码如下:17 Jun 00:17:08 ntpdate[882]: adjust time server 66.175.209.17 offset -0.001938 sec 复制代码代码如下:复制代码代码如下:下载完成,我们来安装它:复制代码代码如下:使用 apt 包管理命令更新一下本地的软件源:复制代码代码如下:现在我们就可以安装 puppetmaster-passenger 了复制代码代码如下:提示: 在安装的时候可能会报错:复制代码代码如下:现在我们已经安装好了 puppet 主控服务器。因为我们使用的是配合 apache 的 passenger,由 apache 来控制 puppet 主控服务器,当 apache 运行时 puppet 主控服务器才运行。在开始之前,我们需要通过停止 apache 服务来让 puppet 主控服务器停止运行。复制代码代码如下:复制代码代码如下:在新创建的文件里面添加以下内容:复制代码代码如下:这样在以后的系统软件升级中, puppet 主控服务器将不会跟随系统软件一起升级。5. 配置 Puppet 主控服务器复制代码代码如下:现在来配置该证书,在创建 puppet 主控服务器证书时,我们需要包括代理节点与主控服务器沟通所用的每个 DNS 名称。使用文本编辑器来修改服务器的配置文件 puppet.conf:复制代码代码如下:输出的结果像下面这样复制代码代码如下:在这我们需要注释掉 templatedir 这行使它失效。然后在文件的 [main] 小节的结尾添加下面的信息。复制代码代码如下:编辑完成后保存退出。使用下面的命令来生成一个新的证书。复制代码代码如下:至此,证书已经生成。一旦我们看到 Notice: Starting Puppet master version 3.8.1,就表明证书就已经制作好了。我们按下 CTRL-C 回到 shell 命令行。查看新生成证书的信息,可以使用下面的命令。复制代码代码如下:复制代码代码如下:在刚打开的文件里面添加下面这几行:复制代码代码如下:以上这几行的意思是给代理节点部署 apache web 服务。7. 运行 puppet 主控服务复制代码代码如下:我们 puppet 主控服务器已经运行,不过它还不能管理任何代理节点。现在我们给 puppet 主控服务器添加代理节点.提示: 假如报错Job for apache2.service failed. see systemctl status apache2.service and journalctl -xe for details.复制代码代码如下:使用 apt 包管理命令更新一下本地的软件源:复制代码代码如下:通过远程仓库安装:复制代码代码如下:Puppet 代理默认是不启动的。这里我们需要使用文本编辑器修改 /etc/default/puppet 文件,使它正常工作:复制代码代码如下:更改 START 的值改成 yes 。复制代码代码如下:最后保存并退出。9. 使用 Apt 工具锁定代理软件的版本复制代码代码如下:在新建的文件里面加入如下内容复制代码代码如下:这样 puppet 就不会随着系统软件升级而随意升级了。10. 配置 puppet 代理节点复制代码代码如下:它看起来和服务器的配置文件完全一样。同样注释掉 templatedir 这行。不同的是在这里我们需要删除掉所有关于[master] 的部分。假定主控服务器可以通过名字“puppet-master”访问,我们的客户端应该可以和它相互连接通信。假如不行的话,我们需要使用完整的主机域名 puppetmaster.example.com复制代码代码如下:在文件的结尾增加上面3行,增加之后文件内容像下面这样:复制代码代码如下:最后保存并退出。使用下面的命令来启动客户端软件:复制代码代码如下:假如一切顺利的话,我们不会看到命令行有任何输出。 第一次运行的时候,代理节点会生成一个 ssl 证书并且给服务器发送一个请求,经过签名确认后,两台机器就可以互相通信了。提示: 假如这是你添加的第一个代理节点,建议你在添加其他节点前先给这个证书签名。一旦能够通过并正常运行,回过头来再添加其他代理节点。11. 在主控服务器上对证书请求进行签名复制代码代码如下:因为只设置了一台代理节点服务器,所以我们将只看到一个请求。看起来类似如上,代理节点的完整域名即其主机名。注意有没有“+”号在前面,代表这个证书有没有被签名。使用带有主机名的 puppet cert sign 这个命令来签署这个签名请求,如下:复制代码代码如下:主控服务器现在可以通讯和控制它签名过的代理节点了。假如想签署所有的当前请求,可以使用 -all 选项,如下所示:复制代码代码如下:复制代码代码如下:假如我们想查看所有的签署和未签署的请求,使用下面这条命令:复制代码代码如下:复制代码代码如下:这里向我们展示了主清单如何立即影响到了一个单一的服务器。假如我们打算运行的 puppet 清单与主清单没有什么关联,我们可以简单使用 puppet apply 带上相应的清单文件的路径即可。它仅将清单应用到我们运行该清单的代理节点上。复制代码代码如下:复制代码代码如下:添加下面的内容进去复制代码代码如下:这里的配置显示我们将在名为 puppetnode 和 puppetnode1 的2个指定的节点上面安装 apache 服务。这里可以添加其他我们需要安装部署的具体节点进去。15. 配置清单模块复制代码代码如下:警告: 千万不要在一个已经部署 apache 环境的机器上面使用这个模块,否则它将清空你没有被 puppet 管理的 apache 配置。现在用文本编辑器来修改 site.pp :复制代码代码如下:添加下面的内容进去,在 puppetnode 上面安装 apache 服务。复制代码代码如下:保存退出。然后重新运行该清单来为我们的代理节点部署 apache 配置。总结现在我们已经成功的在 ubuntu 15.04 上面部署并运行 puppet 来管理代理节点服务器的基础运行环境。我们学习了 puppet 是如何工作的,编写清单文件,节点与主机间使用 ssl 证书认证的认证过程。使用 puppet 开源软件配置管理工具在众多的代理节点上来控制、管理和配置重复性任务是非常容易的。
- 6麻省理工学院使用物联网技术进行无监督物理治疗
- 7代理AI是网络安全的福还是祸?
- 82023年九大DevOps新趋势
- 9GTX1050Ti凤凰版(拥有强大图形处理能力,带来超凡游戏体验)
- 10分库分表,可能真的要退出历史舞台了!