笔名:  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. js2——定时跳转

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. python数据处理----常用数据文件的处理

    数据处理时,常用数据存储形式主要有:CSV.JSON.XML.EXCEL.数据库存储. 一.CSV文件 csv文件简介 CSV是一种通用的.相对简单的文件格式,被用户.商业和科学广泛应用.最广泛的应用 ...

  3. milvus安装及其使用教程

    milvus 简介 milvus是干什么的?通俗的讲,milvus可以让你在海量向量库中快速检索到和目标向量最相似的若干个向量,这里相似度量标准可以是内积或者欧式距离等.借用官方的话说就是: Milv ...

  4. React-Native项目在Android真机上调试

    目录 1.确保你的设备已经成功连接.可以终端输入adb devices来查看: 2.终端运行npm start 开启本地服务,成功后运行react-native run-android来在设备上安装并 ...

  5. rbac结合ssm实现权限分配和管理

    RBAC(Role-Based Access Control )基于角色的访问控制. RBAC 认为权限的过程可以抽象概括为: 判断[Who 是否可以对 What 进行 How 的访问操作(Opera ...

  6. [TimLinux] 系统配置 CentOS7配置Samba

    1. 安装软件 yum install -y samba samba-client samba-common 2. 配置用户 useradd tim passwd tim # 设置用户登录密码 smb ...

  7. Local Model Poisoning Attacks to Byzantine-Robust Federated Learning

    In federated learning, multiple client devices jointly learn a machine learning model: each client d ...

  8. 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享

    写在前面的话&&About me 网上写spring的文章多如牛毛,为什么还要写呢,因为,很简单,那是人家写的:网上都鼓励你不要造轮子,为什么你还要造呢,因为,那不是你造的. 我不是要 ...

  9. usb2.0高速视频采集之68013A寄存器配置说明

    任何的固件编程离不开与与原理图参考,图纸中所采用的是USB的Slave_fifo传输方式,具体配置与图纸对应即可. •USB_IFCLK:同步Slave_FIFO模式,输入频率范围5M-48M,在FP ...

  10. Nginx(一)--nginx的初步认识及配置

    什么是Nginx 是一个高性能的反向代理服务器正向代理代理的是客户端反向代理代理的是服务端 Apache.Tomcat.Nginx 静态web服务器jsp/servlet服务器 tomcat 安装Ng ...