笔名:  haibiscuit

博客园: https://www.cnblogs.com/haibiscuit/

Git地址: https://github.com/haibiscuit?tab=repositories  (欢迎star)

本项目地址: https://github.com/haibiscuit/StudyBook

尊重笔者的劳动成果,未经允许请不要转载

三:git cherry-pick与git merge

前言:

git cherry-pick不能合并其它分支上git merge的提交版本修改,只能合并正常使用git commit提交的版本修改

作用:

相同点:

(1) git cherry-pick和git merge都是将其他分支修改的内容合并到当前分支,也就是都是执行合并修改的操作.

(2) 操作后都会提交新的版本

不同点:

(1) git cherry是其他分支的指定提交节点所修改的内容合并到当前的分支

git merge是其他分支与当前分支在上一次执行合并操作的提交或者两个分支在与master主分支提交的节点之后所有的修改进行合并

 

举例:(上面的内容可以不看,讲的有点复杂,下面通过操作来理解这连个操作)

 

(上图描述:左边是dev分支,右边是test分支,左边分支提交了一个版本c1,右边分支提交了俩个版本c2,c3)

具体操作如下:

(1) //在dev分支创建文件dev_test1.txt文件,并提交为c1节点

    git checkout dev       //切换到dev分支

touch dev_test1.txt    //dev分支上创建dev_test1.txt文件

git add .&&git commit -m "c1"   //提交修改为c1节点

 

(2) //在test分支创建文件test_test1.txt文件,并提交为c2节点

       //然后再创建test_test2.txt文件,并提交为c3节点

   //首先test分支上提交c2节点

git checkout test      //切换到test分支

touch test_test1.txt    //test分支上创建test_test1.txt文件

git add .&&git commit -m "c2"   //提交修改为c2节点

//其次test分支上提交c3节点

touch test_test2.txt    //test分支上创建test_test2.txt文件

git add .&&git commit -m "c3"   //提交修改为c3节点

(3) 在dev分支上进行git cherry-pick和git merge比较

//首先切换到dev分支

git checkout dev    //切换到dev分支

//使用git cherry-pick测试

git cherry-pick test  //将test分支最新提交节点(c3节点)的修改合并到当前分支

//使用git merge测试

git reset --hard HEAD^  //回退到dev分支的上一个节点,消除git cherry-pick test操作结果的影响

git merge test     //将test分支最新版本节点从master节点之后所有的提交修改都合并到当前节点

(4) 测试结果

//使用git cherry-pick test测试结果

dev分支上只有dev_test1.txt和test_test2.txt两个文件,也就是我们在test分支上最新一次的提交是创建test_test2.txt,并没有合并c1版本创建的test_test1.txt文件

//使用git merge test

dev分支上出现dev_test1.txt和test_test1.txt和test_test2.txt三个文件,说明自master版本之后的所有提交的修改都被合并到dev分支

 

使用场景:

git cherry-pick适合合并其它分支的一个版本节点所作的修改,之前和之后的提交都不会合并

git merge适合将两个分支自分叉之后或者是一次合并之后的所有提交版本的合并,这个还是非常常用的

正确的使用姿势:

(1) git cherry-pick操作

git cherry-pick 分支名    

//代表将分支最新版本提交所作的修改合并到但情感的分支,分支名也可以是版本号

(2) git merge操作

git merge --no-ff  -m  "提交信息"  分支名

//这里使用使用--no-ff主要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

Git实战指南----跟着haibiscuit学Git(第四篇)的更多相关文章

  1. Git实战指南----跟着haibiscuit学Git(第五篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  2. Git实战指南----跟着haibiscuit学Git(第十一篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  3. Git实战指南----跟着haibiscuit学Git(第九篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  4. Git实战指南----跟着haibiscuit学Git(第六篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  5. Git实战指南----跟着haibiscuit学Git(第一篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  6. Git实战指南----跟着haibiscuit学Git(第二篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  7. Git实战指南----跟着haibiscuit学Git(第十篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  8. Git实战指南----跟着haibiscuit学Git(第八篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

  9. Git实战指南----跟着haibiscuit学Git(第七篇)

    笔名:  haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...

随机推荐

  1. 基于SCN增量恢复DG同步

    问题描述:做scn恢复备库的测试,吭哧了几天,今天终于可以记录一下,遇到了很多坑,作为初学者可以更好地理解DG,主要先关闭备库,在主库做归档丢失备库无法同步,备库产生GAP,然后增量备份恢复备库,版本 ...

  2. SpringBoot-了解微服务(二)

    什么是微服务? 微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合: 可以通过http的方式进行互通. 要说微服务架构,先了解一下以前的单体应用架构 单体应用架 ...

  3. aplipay支付-app支付之前后端实现

    目录 前言 一 前台aplipay实现 1.1 安装0x5e/react-native-alipay 1.2. 配置 1.3. Alipay.pay(orderStr) 二 后端 2.1 服务端sdk ...

  4. [TimLinux] myblog 创建第一个app

    1. 项目结构 项目地址:https://github.com/timscm/myblog.git 2. 启动项目 通过pycharm启动项目,进入调试模式: "D:\Program Fil ...

  5. UVA-136Ugly numbers

    Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9 ...

  6. CSU-2018

    The gaming company Sandstorm is developing an online two player game. You have been asked to impleme ...

  7. 洛谷 题解 P5015 【标题统计】 NOIP2018 普及组 T1

    没有人用 scanf("%c", &ch) != EOF 吗? scanf 和 EOF 会伤心的. 思路:逐个读入字符,遇到EOF中止,对于每个读入的字符进行判断. 附上考 ...

  8. Python3 并发编程小练习

    实现基于TCP协议套接字,服务端实现接收客户端的连接并发 # server.py import socket from threading import Thread server = socket. ...

  9. docker初体验:Docker部署SpringCloud项目eureka-server

    Docker部署SpringCloud项目eureka-server 1 创建eureka-server工程 创建父工程cloud-demo,其pom.xml如下: <?xml version= ...

  10. 201871010119-帖佼佼《面向对象程序设计(java)》第7周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...