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合并部分提交内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SecureCRT的使用超详细教程

    SecureCRT的使用超详细教程

    SecureCRT是Windows下登录UNIX或Linux服务器主机的软件,优点是可以一次创建多个 Tab Page,连接多台远程主机,下面给大家介绍下SecureCRT的使用超详细教程,感兴趣的朋友一起看看吧
    2021-11-11
  • ASCII控制字符的介绍小结

    ASCII控制字符的介绍小结

    ASCII编码中第0-31个字符以及第127个字符都是不可见的,,但是它们都具有一些特殊功能,所以称为控制字符,本文主要介绍了ASCII控制字符的介绍小结
    2024-06-06
  • Git远程操作详解

    Git远程操作详解

    本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。同时,本文覆盖了上面5个命令的几乎所有的常用用法,所以对于熟练用户也有参考价值。
    2014-08-08
  • idea启动后CPU飙升的问题解决

    idea启动后CPU飙升的问题解决

    IDEA运行大型项目,项目启动卡顿,CPU使用率占用过高,下面这篇文章主要给大家介绍了关于idea启动后CPU飙升的问题解决,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 初探 SOA(补充)

    初探 SOA(补充)

    SOA是一种应用框架,它着眼于日常的业务应用,并将它们划分为单独的业务功能和流程,即所谓的服务。它使用户可以构建、部署和整合这些服务,且无需依赖应用程序及其运行计算平台,从而提高业务流程的灵活性。
    2009-01-01
  • JetBrains发布java代码质量检测工具Qodana早期预览版

    JetBrains发布java代码质量检测工具Qodana早期预览版

    这篇文章主要介绍了JetBrains发布java代码质量检测工具Qodana早期预览版,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 使用版本控制原因及Git与Subversion介绍

    使用版本控制原因及Git与Subversion介绍

    这篇文章主要为大家介绍了使用版本控制优点原因介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Base64编码的深入认识与理解

    Base64编码的深入认识与理解

    这篇文章主要介绍了Base64编码的深入认识与理解的相关资料,需要的朋友可以参考下
    2017-03-03
  • 解决Chrome在新版MacOS上报错 NET::ERR_CERT_WEAK_KEY 的问题

    解决Chrome在新版MacOS上报错 NET::ERR_CERT_WEAK_KEY 的问题

    这篇文章主要介绍了解决Chrome在新版MacOS上报错 NET::ERR_CERT_WEAK_KEY 的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 详解git submodule使用以及注意事项

    详解git submodule使用以及注意事项

    这篇文章主要介绍了详解git submodule使用以及注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论