问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Git Cherry-Pick实战:如何将某次提交单独合并到其他分支

创作时间:
作者:
@小白创作中心

Git Cherry-Pick实战:如何将某次提交单独合并到其他分支

引用
CSDN
1.
https://m.blog.csdn.net/qq_24950043/article/details/139170667

在软件开发中,多版本并行开发是一个常见的场景。当一个版本分支中实现了一个基础功能或修复了一个bug,如何将这个改动应用到其他版本分支中呢?Git的cherry-pick命令提供了一个简单而强大的解决方案。本文将详细介绍如何使用cherry-pick命令将某次提交单独合并到其他分支,包括IDEA界面操作和命令行操作两种方式。

0. 引言

最近在进行系统的多版本并行开发,涉及一些共有基础功能提交时就遇到了麻烦,一份代码需要向多个版本分支进行同步,以保证多版本都能有更新该基础功能。
多次对比提交的方式显然会带来巨大的工作量。但实际上我们可以通过git的cherry-pick指令来简化操作

1. cherry-pick简介

cherry-pick 其作用就是将其他分支的单个提交合并到当前分支,其名字也很贴合——“摘樱桃”,从分支树上摘下来指定的几颗。
其应用场景包括:
合并单个提交:当我们只想将某个分支上的某一次提交合并到当前分支时,可以使用cherry-pick命令,而不需要合并整个分支
修复bug:当我们在一个分支上修复了一个bug,并希望将这个修复同步应用到其他分支时
共性功能:当我们在一个分支上开发了一个新功能,这个功能可能属于基础性通用功能,也希望应用到其他版本时

2. idea界面操作

1、首先为了模拟操作,我这里创建了两个分支:feature-v1.0, feature-v2.0。我们需要模拟的场景是:

  1. 在v1.0版本中开发并提交了一次通用功能
  2. 需要将v1.0提交的这次通用功能合并到v2.0版本中
    我们首先在v1.0中模拟一次代码提交

2、然后右下角将分支切换到v2.0

3、点击左下角的Git选项,打开git提交历史,并在菜单左侧选中来源分支,即v1.0

4、找到我们要合并的提交,并选中,然后点击窗口中的樱桃图标,或者右键菜单中点击
Cherry-Pick
,如果需要合并多次提交的话,就都选中然后点击cherry-pick即可

5、成功合并后会看到提示信息
6、需要注意的是,如果前面选择的分支是本地分支,那么还要将合并的代码提交到远端分支
7、合并后,我们就可以在本地以及远端分支都看到这次提交的代码了

3. git指令操作

1、首先进入到项目目录下,切换分支到来源分支v1.0

git checkout feature-v1.0  

然后执行
git log
指令,查看历史提交记录

2、每次提交都有一个唯一的hash标识,找到你想要合并的那次提交,复制其hash
hash如:
4bfc117cd967eaa56e0835847e901becf3787b25

3、切换到目标分支

git checkout feature-v2.0  

4、执行cherry-pick指令,其指令语法如下,其中commit表示某次提交的hash值或者分支名,如果是分支名会将这个分支的提交都合并过去

git cherry-pick <commit>  

如果需要合并多次,就将hash值用空格隔开即可

git cherry-pick hash1 hash2 hash3  

我们将之前复制的hash值贴过来执行

git cherry-pick 4bfc117cd967eaa56e0835847e901becf3787b25  

如此代码就合并过来了

5、当然这里还只是提交到本地分支,如果要提交到远端的话,执行
git push
推送即可

总结

如上,我们就完成了针对某次提交的单独合并操作,实际操作时更加建议使用idea的可视化操作,毕竟可能会涉及到代码冲突,这时就需要我们手动解决冲突了

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号