实际场景

在多版本项目开发中,大家应该经常会遇到需要把最新版本上开发的代码,同步到历史的版本中,或者是在发版后发现了问题,在最新版代码上解决了该问题,同时也需要把以前有问题的版本给解决掉,再把解决过的发个版给客户使用,这时分别在不同版本上改代码会很麻烦,如果能把一个版本上解决好的代码,直接同步到另一个版本就好了,git cherry-pick就能满足这个需求,下面给大家介绍一下。

git cherry-pick 是同步哪些代码

  • git cherry-pick 同步的是当前提交记录中的代码,就算你的同一个文件的版本1和版本2中还有其他差异代码也不会同步。

git cherry-pick同步原理

  • 假设有两个分支:master分支,develop分支
master   a-b-c
develop  a-b-c-d-e-f
  • 现要将develop提交的 e 记录,同步到master
master   a-b-c-e
develop  a-b-c-d-e-f
  • 同步后,只会把 e 记录所有操作同步到master,此时只多了 e 记录的内容。

方式1:使用git命令进行同步

  • 假设有两个分支:master分支,develop分支
master   a-b-c
develop  a-b-c-d-e-f

只同步一条记录 e

  • 首先需要把代码切到需要同步的分支上,即master分支
git checkout master
  • 查看 e 记录的commit id(提交记录 id ,下面简称 eid)
git log
  • 执行同步操作,把 e 记录同步到master分支
git cherry-pick eid
  • 如果同步错误,可取消之前的cherry-pick
git cherry-pick --quit

同步多条记录 d,e,f

  • 首先需要把代码切到需要同步的分支上,即master分支
git checkout master
  • 查看 d,e,f 记录的commit id(提交记录 id ,下面简称 did、eid、fid)
git log
  • 执行同步操作,把 d,e,f 记录同步到master分支
#写法1:^表示包括左边的,即[did,fid]
git cherry-pick did^..fid
#写法2:不包括左边,即(did,fid]
git cherry-pick cid..fid
  • 如果同步错误,可取消之前的cherry-pick
git cherry-pick --quit

方式2:使用Idea进行同步

  • 首先切到master分支
  • 打开日志提交记录,在对应记录上点击右键,选择Cherry-Pick即可

git如何把分支提交的代码同步到另一个分支(git cherry-pick)相关推荐

  1. git clone 某次提交前代码_git提交代码常用命令

    1.在网页上fork中心仓到自己私有仓 2.本地clone自己的私有仓:git clone 自己的私有仓地址 3.本地添加中心仓分支地址: git remote add upstream ssh:// ...

  2. intellij idea 合并分支到主分支,主分支代码同步到某一分支

    将gith或者Gitee上的项目clone到本地 git clone https://xxxx 打开intellij idea,打开项目 创建分支 1. 点击右下角的git小窗口,然后点击+new b ...

  3. 单主机上,多个Git用户,同时提交下载代码的配置

    ==========0. 公私钥准备========== [root@host-10-57-72-19 ~]#  chmod 600 /root/.ssh/sun_id_rsa.pub [root@h ...

  4. 通过Android studio使用git创建本地分支提交远程仓库以及如何查看切换分支

    我们有时候对命令不熟悉的同学例如我,那么这个AS自带的这个创建分支功能就对我们必不可少了. 首先我们看下远程仓库只有主支master,没有任何分支的信息如下图: 1.首先我们打开AS,点击右下角的gi ...

  5. git 把代码同步到另外的分支

    git想把代码从A分支同步到B分支,假如当前代码在A分支 需要使用如下步骤 git log                                             打印log并且复制c ...

  6. git gui怎么拉取项目代码_Git可视化极简易教程 —— Git GUI使用方法

    前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并 ...

  7. git gui怎么拉取项目代码_Git可视化极简易教程 — Git GUI使用方法

    前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并 ...

  8. 别总用git merge了,Git高级操作之选择合并,git将一个分支的提交合并到另一个分支,git cherry-pick

    当前需求:我现在有两个分支 A和B,这两个分支都同属于是一个项目,一个是新版本,一个是旧版本.而且差异化比较大 现在产品下发了一个需求,需要在两个版本上同时发布进行,那么只能在一个版本上开发,并且由于 ...

  9. Git开发错了分支,利用git的暂存完成代码转移到正确的分支

    问题描述:在分支one上开发了很多功能,结果发现开发错了分支,新功能应该在另外一个分支(分支two)上面开发,但此时另外一个分支上已经有其它人员开发的代码 解决方法: 第一步:先在分支one中使用&q ...

最新文章

  1. 第十五届全国大学生智能车竞赛各分赛区赛道数量以及比赛系统数量
  2. BZOJ 1260:[CQOI2007]涂色paint
  3. Python运行异常 Original error was: DLL load failed:
  4. C++模板特化的一个BUG?
  5. 搭建基于Docker社区版的Kubernetes本地集群
  6. Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
  7. 牛客多校10 - Identical Trees(dp+二分图最小权匹配)
  8. Hbase高级应用:建表高级属性、行键设计、设计原则、热点问题
  9. [mmdetection] - win10配置mmdetection(1.1和2.0) + 训练网络(faster-rcnn、mask-rcnn)
  10. exit c+_C / C ++中的exit(0)vs exit(1)与示例
  11. python调用sqlplus执行_python可以调用sqlplus吗?
  12. TestNg的IReporter接口的使用
  13. @class与#import
  14. vue better-scroll 下拉上拉,加载刷新
  15. 谨防病毒利用气象软件锁定浏览器主页
  16. python字典添加主键_字典的常见操作
  17. 一个简单的软件工程流程
  18. Qt For Android | QT安卓开发环境搭建
  19. 三边定位的最小二乘法运用
  20. typora里插入图片,设置图片大小和位置

热门文章

  1. jQuery - Chaining
  2. python高级绘图师_matplotlib库-python中的绘图师
  3. 中国托盘拆卸工行业市场供需与战略研究报告
  4. vue中本地pdf文件加载错误,文件不显示
  5. 校园导游系统_C语言实现_Dijkstra(迪杰斯特拉算法)_数据结构
  6. nginx+tomcat 企业级jsp项目部署
  7. 《电商直播高画质开播指南》正式发布,6步快速搭建一个高清直播间
  8. 复旦大学陈怡然:文本摘要的跨数据集迁移研究
  9. css绘制各种形状图形
  10. 马云的双11计算机发展史图片,双11白色系电脑想买就选它们