文章分三部分

  • 在idea上直接cherry pick
  • git命令行加idea来cherry pick,并解决冲突
  • 补充的一些命令行以及注意事项

参考链接:idea的cherry pick  https://www.jianshu.com/p/b36fc61afb26

方法1.在idea上直接cherry pick

想将develop分支上的几个提交cherry pick到test分支上,

1.将项目切换到test分支上

(1)右击此处

情况1:已经从远程test分支拉取过代码到本地,直接在local branches中选择test分支来切换

情况2:未从远程test分支拉取过代码到本地,本地分支里还没有test分支

为本地分支取个名字,默认是远程分支的名字,这里因为我本地已经有test分支了,所以我将名字改成了test2

将远程分支拉取到本地之后,该修改的东西可能有maven的配置,sdk,该导包导包,不细说了

(2)将git的提交日志切换到develop分支上

也就是说,在test的项目上显示一下develop的提交日志

(3)选中要cherry pick的提交记录(借助ctrl或者shift可多选),点击cherry pick按钮

(4)如果cherry pick成功,会有类似下图的提示,

然后直接git--repository--push就可以看到cherry pick的记录,提交信息就是原有的提交信息

PS:我cherry pick失败了,因为有冲突,所以我转去命令行完成了操作.

后来我整理这篇笔记的时候只有一条可用的提交记录做测试,我cherry pick成功后不需要手动commit,直接push就能看到记录,提交信息就是原有的提交信息

但是网上还有说会先经历commit的过程,见下图

所以cherry pick成功后的步骤大概是这样,要么直接push就行,要么经历commit过程

下图源自链接:

https://www.jianshu.com/p/b36fc61afb26

如果用idea可以cherry pick成功,没有什么冲突,那么我文章剩下的内容可以不看了

(5)如果cherry pick失败,会有类似下图的提示,

idea没有提示我哪里冲突,并且在我的version control---local changes中也没有提示是谁冲突了,因此我打开了git命令行来重新执行cherry pick

方法2.git命令行加idea来cherry pick,并解决冲突

注意:下面我是将test分支上的提交cherry pick到develop分支上的,,为了和上面统一,可以忽视分支名字

原则就是A的提交cherry pick到B上的话,就切换到B分支,git cherry-pick A上面提交记录的版本号

下面不纯粹是命令行的操作,能在idea中解决的,我还是选择在idea中解决了

之前我一直以为本地windows的git装得有问题,所以在项目的文件夹里面右键不会出现git bash的选项(现在我也不知道为什么,求解)

其实git bash命令行是能用的.

打开git命令行窗口,切换到项目的文件夹下

为了把涉及公司项目的部分打码,截图可能不是很好看

项目当前是哪个分支,命令行中就会显示哪个分支,如下红框里的develop

执行的是linux的命令,注意只能是/

cd /d/MyProject

执行cherry pick命令

在idea中找到要cherry pick的提交记录,右键----Copy Revision Number,复制版本号

执行命令git cherry-pick 版本号

(1)成功

在idea上查看version control---local changes中是否有冲突提示(保险起见)

没有的话,就可以push了

(2)失败

失败的话继续执行下面操作

查看git状态

git status

绿色的cherry pick成功的,已经提交了的文件

红色的是cherry pick失败的,有冲突的文件

这些红色的文件会在version control---local changes中出现,并且也是红色的

在idea打开文件解决冲突

全部冲突都解决完就git add,表示该文件已经解决了冲突

(命令行和idea上的git--add应该是有同样的效果,我只试过命令行)

回到命令行,可以直接将上面的红色文件的路径复制一下

然后执行git add 文件相对路径

然后再查看状态,看到所有需要cherry pick的文件都是绿色的,然后就可以push了

补充知识:

1.一般开发都是用develop分支的(下面简称dev),在dev分支上开发,在test分支上测试

因此,代码都提交到dev分支上,dev测试无误之后,如果想打包给测试组,就将dev merge到 test上

不要在test上直接提交代码,也不要将test merge到dev,

保持dev的代码比test更新,或者和test一致

如果想要改bug,在dev上改,改完之后cherry pick到test分支,或者在dev想要修改的节点上拉出一条新分支,修改完毕后,将新分支merge到dev和test

PS:我写命令行这部分内容的时候,是将test的提交cherry pick到dev分支的,这其实是不合规矩的,但是因为一些特殊情况只能如此

2.补充一些git命令

(1)git stash 暂存文件,相当于idea中的git--repository--stash changes

(2)git stash list 显示暂存列表,相当于idea中的git--repository--unstash changes

(3)git stash apply stash@{0} 应用某次暂存,数字0可替换成暂存列表中的其他数字,相当于在idea中的git--repository--unstash changes中点击apply stash

(4)git stash drop stash@{0} 删除某次暂存记录,数字0可替换成暂存列表中的其他数字,相当于在idea中的git--repository--unstash changes中点击drop

注意,删除一条之后,后面的序号会往上移(数字减小),新增一条暂存记录时,最新一条的序号是0,以前的会挨个下移(数字变大)

(5) git update-index --assume-unchanged 文件相对路径 把不想提交的文件忽略,即不会出现在git status中,不会出现在idea的version--local changes中

也可以通过idea来设置要忽略的文件,打开version--local changes,选中文件右键--add to gitignore

PS:我选择忽略的是test文件夹中的东西,但是可能是因为这个东西引用了正式代码(src)中的内容,因此忽略无效

3.cherry pick之后可以取消

已经cherry pick,下面会提示

取消cherry pick,点击abort cherry pick

4.浅蓝色背景的是两个分支同步的地方,白色的是另一个分支有的

7.想要丢弃已经提交的文件,重置到某一节点的状态,可以在idea上点击git---repository---reset head

注意选择hard之后,已经提交的文件,和修改了但是没有提交的文件都会消失

reset type可以参看https://www.cnblogs.com/chenweichu/articles/5819378.html

8.注意:上面需要选择版本号的地方,要小心一点,看好选择的分支是本地分支还是远程分支,如果是本地分支,commit了但是未push的文件也会显示在git的log中,复制错了可能会有不必要的麻烦

cherry-pick(命令行和idea方式),git部分常用命令及一些注意事项相关推荐

  1. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  2. Git之(三)Git中常用命令——分支管理

    三.Git中常用命令--分支管理 为什么要使用分支管理? 分支就是科幻电影里面的平行宇宙,也就是当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干 ...

  3. Mac 配置Git与常用命令

    Mac 配置Git与常用命令总结 Mac 配置Git 1.Mac Git 安装 2.生成密钥 3.秘钥添加到仓库 Git常用命令 Mac 配置Git 1.Mac Git 安装 Mac一般自带Git工具 ...

  4. 【Git】Git是什么?简单说说Git的工作机制?Git的常用命令有那些?

    目录 一.Git是什么? 二.简单说说Git的工作机制? 三.Git的常用命令有那些?

  5. 统信UOS命令大全 麒麟系统命令大全 Linux常用命令操作大全(非常全非常详细) ubuntu命令大全常用操作命令大全

    [腾讯云]云服务器2核4G74元/年,222元/3年 Linux常用命令大全(非常全!!!)适用于 统信UOS 麒麟kylin 系统信息  arch 显示机器的处理器架构 uname -m 显示机器的 ...

  6. linux常用命令 打开文件,【Linux】常用命令 lsof查看打开的文件

    Linux系统把软硬件都抽象成文件,所以通过文件可以追踪到很多重要信息,如读取的配置文件.打开的端口等. 下面是常见的用法: 默认测试文件名为text.txt 1,显示打开text.txt的进程: l ...

  7. php基础命令,PHP命令行下的11个常用命令介绍

    本文整理了PHP命令行下的11个常用命令,下面介绍给大家,它们分别是php -m.php -v.php --ini.php -h.php --info.php --rf .php --rc .php ...

  8. Git基础(常用命令)介绍

    版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Gi ...

  9. [编辑修订01]git 常用命令和Gerrit的联合使用常用命令

    Git常用操作命令分级/以及和Gerrit的联用基础 经常看到如何使用git,但是,往往很多命令都没用过,也没有分级,那些是最常用的,那些是常用的,那些是必须记住的命令.本文根据工作尝试整理一下.默认 ...

最新文章

  1. Android Stadio配置了gralde的本地路径,但是windos 命令行还是会下载gradle
  2. 数据结构 线性存储 -- 栈 讲解
  3. WCF系列学习笔记4之绑定详解
  4. matlab如何把选中区域标亮
  5. stack smash_扶手椅VGUX:Super Smash Bros.Ultimate
  6. 一个有趣的Go项目,3D界面管理k8s集群,真好玩!
  7. 火星云分发全网视频_好用的短视频一键分发软件,让工作效率提高10倍
  8. 深度学习-词嵌入(word2vec)
  9. azw3转换为pdf_干货:如何Java 将 Word 文档转换为 PDF
  10. FOI冬令营 Day2
  11. 东软软件动态生成对数据表更新操作的方法
  12. html新标准,HTML 5新标准将会在2022年正式发布
  13. 【转】python开发大全、系列文章、精品教程
  14. php判断手机 跳转代码,php判断客户端是手机设备然后跳转到手机站
  15. 服务器虚拟机要怎么安装,服务器虚拟机怎么安装
  16. 全行业产业链图示(摘自企查查)
  17. 分辨率单位及换算详解
  18. 解决报错:Source does not fit in dest 异常
  19. 35岁的程序员:第44章,宿命
  20. [活动]和Jeffery大师的最近距离

热门文章

  1. 逐个击破!拿下学校核心系统
  2. 中南民族大学数字电路实验一
  3. CAD中的DWL是什么文件[可以放心删除]
  4. 求圆面积的c 语言程序,c语言求圆的面积
  5. 数据安全之个人信息保存期限最小化的判定
  6. Linux文件属主显示数字
  7. git 常用操作集锦
  8. Python 标识符与关键字
  9. 中国大学生计算机设计大赛三等奖什么水平,我校获得2016年(第九届)中国大学生计算机设计大赛总决赛二等奖1项、三等奖1项...
  10. Magento产品单页的博客推荐功能(Blog)