惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
H
Help Net Security
小众软件
小众软件
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research
S
SegmentFault 最新的问题
Last Week in AI
Last Week in AI
爱范儿
爱范儿
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园 - 【当耐特】
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
博客园_首页
Jina AI
Jina AI
D
Docker
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志

博客园 - smil、梵音

css渐变边框的实现 C primer Plus 第六版第4章节复习题5记录 C语言第4章末尾程序找错记录 css 的z-index的层级问题 由webai项目的 AI工作台 项目有感记录 C语言标准(C89/C90)中的32个关键字全列表 Windows 系统的 vscode 通过 Remote-SSH 连接虚拟机的 Ubuntu 系统运行 C 语言的代码 Windows 系统 vscode Remote-SSH 远程连接虚拟机里面的Ubuntu系统的失败处理 Ubuntu虚拟机里安装了SSH,开启SSH服务的时候报错 VS Code的Remote - SSH功能 Ubuntu系统里面安装 g++ ,sudo apt update 的含义 C语言是不是必须得通过gcc编译成可执行的程序? c语言用gcc编译过后,执行 ./hello.c 报错 ./hello.c: 权限不够 windows系统的虚拟机里面的Ubuntu系统安装VMware Tools Ubuntu的应用中心搜索 vscode 的时候,筛选条件为Snap包、debian包是什么意思,如何安装vscode Ubuntu系统是否就是Linux系统,安装软件和Windows系统有何区别 Ubuntu系统里面vscode运行C语言的第一个 Hello World 程序 vscode 中安装C/C++相关的插件 Ubuntu 安装一个轻量级的中文输入法Fcitx5 Ubuntu安装百度网盘 Ubuntu系统里面安装vscode 乌版图系统截屏快捷键 Ubuntu 系统里面运行C++ TortoiseGit 的安装与汉化 安装虚拟机+ ubuntu24.04 系统 联想小新安装 ubuntu24.04 双系统 | 安装乌版图系统 | windows安装 ubuntu24.04 双系统 利用faststone capture制作gif动图 Sublime Text 常用编辑快捷键速查表 vscode 中的 css 样式代码不显示折叠图标的解决方法 IDEA中git的Cherry-Pick的可视化使用(个人总结) IDEA中git的Cherry-Pick的使用
IDEA中如何实现git的cherry-pick可视化操作?
smil、梵音 · 2026-04-01 · via 博客园 - smil、梵音

问题现象:
        今天在学习了git的cherry-pick功能,于是引出了一个问题:
        IDEA中如何实现git的cherry-pick可视化操作?


问题分析:
        首先,来了解一下 git 的 cherry-pick 功能是什么?


        1、先说说命令格式:
          git cherry-pick commit记录的id标识


        2、再说功能:
          git cherry-pick:用于把某一个代码分支的commit修改合并到当前的代码分支。


乍一看,发现和merge有点类似,区别就在于: 

  merge:是把某一个代码分支完全合并到当前的代码分支。完全合并的意思就是合并之后,当前分支与被合并的分支的所有文件都是保持完全一致的

  cherry-pick:可以精确地将某一个分支上的某一次commit提交操作的改动,合并到当前代码分支,即合并之后,当前分支与被合并的分支被commit操作改动的文件是保持完全一致的,但其他文件就不一定了。

 3、最后说说好处:

        3.1、当被合并分支存在多个commit提交记录,有时候并不是所有的commit提交记录,都是当前分支所需要的,因此我们可以根据commit提交记录来合并我们实际所需要的即可,这是merge做不到的。

        3.2、以commit记录为单位的合并,可以让当前分支的合并信息更加清晰详细,cherry-pick会默认把commit记录带入合并操作中,可以清晰地知道当前分支中做了什么操作,保证了当前分支和被合并分支的commit记录一致性。而merge则是一次性合并,无法写日志,也无法根据commit记录来清晰地知道当前分支被改动了什么内容,只能通过查看合并记录所影响的文件或被合并分支的commit记录,这样有一定的缺陷。


        不过这也是见仁见智的,因为merge的完全合并确实是省时省力,而cherry-pick则是追求颗粒度。因此 cherry-pick 适用于被合并分支的commit记录较少的时候,例如:
        测试人员会根据每个bug进行问题记录和派发,开发者在收到问题记录后,就需要针对各个bug进行问题消缺,每 解决 一个bug就commit一次,然后就可以根据下次测试计划中需要验证的bug来对commit记录进行一一cherry-pick。

解决方法:

        1、先保证IDEA底部 菜单栏 中有 Version Control 项;如果没有可以尝试通过以下2个方法来调出:

        1.1:按快捷键 alt+F9

        1.2:点击顶部菜单栏中的 View - Tool Windows - Version Control

图片

2、点击底部菜单栏 Version Control - Log ,右下角可以看到我当前分支是(develop),之前我已经提交了几个记录在分支(task/111-001-测试git的stash功能),如图:

图片

3、选中想要合并的commit记录,右击 - Cherry-Pick :

图片

弹出窗口后,左边选中本次commit记录所改动的所有文件,右边点击Accept Theirs:

图片

弹出窗口,可以看到被合并分支的commit记录的日志也被获取过来了,点击Commit and Push

图片

弹出提示窗口,大概意思就是说正在解析本次commit合并的代码,右下角可以看到有2 processes running...的字样,这里直接忽略即可,点击Commit:

图片

commit&push成功:

图片

 至此就实现了IDEA中git的cherry-pick可视化操作。

拓展:如何回退提交记录?

        因为有时候我们误操作了,或者合并错了等等情况,所以这里再提一下如何回滚/回退已提交的记录:

        1、首先要保证commit记录是当前分支的,因为在其他分支的提交记录上操作是无效的:

图片

2、选中想要回退的commit记录,右击 - Resert

图片

弹窗commit窗口,这里可以Commit一次,用于记录本次回退操作;也直接关闭或Cancel掉,

 这样就不会记录本次回退操作,这个看实际情况而定吧,反正不管是否提交,都会回退成功

图片

要是你又误操作了,发现不该回退,或者回退的不该是当前的commit记录,则可以对之前cherry-pick 合并成功之后的commit记录上进行cherry-pick即可,该操作不需要再次commit记录日志,所以非常方便:

图片

另一种回退操作,Reset Current Branch to Here ,这种是可以把当前分支回滚到历史commit记录中的某个状态:

图片

弹出窗口,这里我选择了Keep,意思是回退之后,保持当前分支的改动,例如(我现在先创建了一个新文件,之后再点击回退,则回退之后,这个新的文件依然存在,而不会丢失)。

图片


原文链接:https://blog.csdn.net/weixin_42585386/article/details/128256149