git合并部分提交的实现

 更新时间:2023年08月23日 10:37:56   作者:一户董  
在进行Git合并某一次提交时,有时会出现冲突,本文主要介绍了git合并部分提交的实现,具有一定的参考价值,感兴趣的可以了解一下

写在前面

在日常工作中经常会有这样的场景,在正常的功能开发中突然有紧急的bug修改,或者是紧急功能开发上线,在上线时又不能将正在开发中的功能合并到主干,此时我们就需要只合并需要紧急上线的代码到主干,接下来我们就看下这种情况如何处理。

1:cherry-pick

通过git的cherry-pick命令可以选择合并哪个提交id对应的修改到当前分支,接下来详细看下。

假设现在本地有master分支和dev两个分支,如下图:

PS D:\test\test-cherry-pick> git branch -vv
 * dev2   64af4de [origin/dev2] modify bbb.txt add 二二二
   master 10ac835 [origin/master] modify aaa.ttxt add 一一一

当前我们在 dev2 ,当前假设提交记录如下:

PS D:\test\test-cherry-pick> git log -n2 --pretty=oneline
64af4de7d496fff9d68489e7ab6304589f00a0d1 (HEAD -> dev2, origin/dev2) modify bbb.txt add 二二二
5aed452f3bebebd87d6be48388f8dab57037cbb8 modify aaa.ttxt add 一一一

我们希望合并提交ID为 64af4de7d496fff9d68489e7ab6304589f00a0d1 的修改到主干,此时我们需要记下这个提交ID,然后切换到master,如下:

PS D:\test\test-cherry-pick> git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
PS D:\test\test-cherry-pick> git branch
  dev2
* master

然后使用命令 git cherry-pick 提交ID 进行合并,如下:

PS D:\test\test-cherry-pick> git cherry-pick 64af4de7d496fff9d68489e7ab6304589f00a0d1
[master 88c7faf] modify bbb.txt add 二二二
 Date: Tue May 17 18:07:05 2022 +0800
 1 file changed, 2 insertions(+), 1 deletion(-)

然后就可以正常的push合并的信息到远程master了。其他的提交ID也可以通过这种方式来完成合并。在idea中也可以进行这种操作,都是如下的步骤:

1:切换到要合并代码的分支
2:获取要合并的提交,执行cherry-pick。

只不过使用idea是通过界面操作,而不是使用命令罢了,如下我们在 dev2 分支进行了如下修改,先增加了文件 ddd.txt ,然后增加了文件 eee.txt ,产生的提交记录如下:

然后我们将这2次提交通过cherry-pick合并到master,首先切换到master分支:

然后选中项目->git->show history,进入如下界面:

默认显示的是当前分支的提交记录,为了能够看到dev2分支的提交记录,我们将查看历史的分支切换为dev2,如下:

此时就可以看到dev2的提交记录了,如下:

接下来shift选中红框记录,然后右键cherry-pick即可,如下图:

接下来就可以push到远端了。

如果,凡事有如果,cherry-pick本质也是合并代码,如果是合并代码有冲突怎么办呢?会提示失败,此时怎么办呢?如果是idea的话会给出比较友好的提示让我们自己合并,但是个人建议一旦出现冲突,就不要采用cherry-pick方式来合并了,可以考虑使用 2:idea compare功能 方式。

2:idea compare功能

git提供了比较的功能,通过比较我们也可以很方便的合并自己想要合并的内容,按照如下操作:

手动点击中间的 >> 比较合并就可以了,因为是手工,一定要细心,不要合并错了。

3:最佳实践★★★★★

按照如下2种情况:

1:如果是完全独立的修改(修改已有文件,没有其他人修改,或者是新添加的文件),则优先选择使用"1:cherry-pick",至于命令行方式还是idea的GUI方式,根据个人习惯,推荐idea方式,效率高。
2:如果是存在非独立的修改(修改的已有文件也有他人修改且不可合并,或者是添加了不可合并的新文件),使用"2:idea compare功能",虽然效率相对低一些,但是安全性高,不容易出问题,对于新文件,手动CV即可。

到此这篇关于git合并部分提交的实现的文章就介绍到这了,更多相关git合并部分提交内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 科学知识:理解socket

    科学知识:理解socket

    这篇文章主要介绍了科学知识:理解socket,本文试图用简洁的语言说清楚socket的相关知识,以便理解,需要的朋友可以参考下
    2015-05-05
  • Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

    Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

    本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和部署DeepSeekR1模型,并提供了解决下载问题的建议,最后,作者解释了如何在VSCode中使用Cline插件调用DeepSeekAPI,以实现智能编码辅助,感兴趣的朋友一起看看吧
    2025-02-02
  • 利用DeepSeek实现复杂Git操作的详细过程

    利用DeepSeek实现复杂Git操作的详细过程

    今天综合利用 DeepSeek V3 和 R1 推理模型,成功解决了一个复杂的 Git 操作,谨以此文记录 DeepSeek 使用心得,以备后续复盘,下面是小编给大家介绍的利用DeepSeek实现复杂Git操作的详细过程,需要的朋友可以参考下
    2025-02-02
  • DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)

    DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)

    这篇文章主要介绍了DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)的相关知识,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 玩转markdown 分享几个需要用到的工具

    玩转markdown 分享几个需要用到的工具

    markdown是一个面向写作的语法引擎,markdown的最终目的都是解析成html用于网页浏览,所以它兼容html语法,即你可以在 markdown文档中使用原生的html标签
    2016-08-08
  • 前端工程Monorepo项目管理方式

    前端工程Monorepo项目管理方式

    这篇文章主要介绍了现代前端越来越离不开的项目管理方式Monorepo的概念、MultiRepo的弊端、Monorepo的收益以及Monorepo的落地这几个角度来认识和学习Monorepo
    2022-07-07
  • 分享下GET和POST的真正区别

    分享下GET和POST的真正区别

    如果有人问你,GET和POST,有什么区别?你会如何回答
    2013-02-02
  • Git配置用户签名方式及原因说明

    Git配置用户签名方式及原因说明

    这篇文章主要为大家介绍了Git配置用户签名方式及原因说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Windows环境下实现Jenkins部署的教程详解

    Windows环境下实现Jenkins部署的教程详解

    这篇文章主要介绍了Windows环境下实现Jenkins部署,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • RabbitMQ队列中间件消息持久化 确认机制 死信队列原理

    RabbitMQ队列中间件消息持久化 确认机制 死信队列原理

    这篇文章主要介绍了消息队列中间件之RabbitMQ消息的持久化、确认机制、死信队列原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论