git合并部分提交的实现

 更新时间:2023年08月23日 10:37:56   作者:一户董  
在进行Git合并某一次提交时,有时会出现冲突,本文主要介绍了git合并部分提交的实现,具有一定的参考价值,感兴趣的可以了解一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

写在前面

在日常工作中经常会有这样的场景,在正常的功能开发中突然有紧急的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合并部分提交内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • MobaXterm快速入门、高级使用技巧图文详解

    MobaXterm快速入门、高级使用技巧图文详解

    MobaXterm 提供丰富的自定义选项,以满足个人偏好和需求,您可以自定义外观、键盘快捷键、字体、颜色方案等,这篇文章主要介绍了MobaXterm快速入门、高级使用技巧,需要的朋友可以参考下
    2023-06-06
  • selenium IDE自动化测试脚本的实现

    selenium IDE自动化测试脚本的实现

    本文主要介绍了selenium IDE自动化测试脚本的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vscode?ssh安装librosa处理音频的解决方法

    vscode?ssh安装librosa处理音频的解决方法

    这篇文章主要介绍了vscode?ssh安装librosa处理音频的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 基于ChatGPT使用AI实现自然对话的原理分析

    基于ChatGPT使用AI实现自然对话的原理分析

    ChatGPT是当前自然语言处理领域的重要进展之一,可以生成高质量的文本,可应用于多种场景,如智能客服、聊天机器人、语音助手等。本文将详细介绍ChatGPT的原理、实战演练和流程图,帮助读者更好地理解ChatGPT技术的应用和优势
    2023-05-05
  • VScode中配置使用fortran的方法

    VScode中配置使用fortran的方法

    这篇文章主要介绍了VScode中配置使用fortran的方法,本文通过图文实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • 每个程序员需掌握的20个代码命名小贴士

    每个程序员需掌握的20个代码命名小贴士

    这篇文章主要介绍了每个程序员需掌握的20个代码命名小贴士,需要的朋友可以参考下
    2015-03-03
  • Caffe图像数据转换成可运行leveldb?lmdb文件

    Caffe图像数据转换成可运行leveldb?lmdb文件

    这篇文章主要为大家介绍了Caffe图像数据转换成可运行leveldb?lmdb文件教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 谷歌师兄的算法刷题笔记

    谷歌师兄的算法刷题笔记

    这篇文章主要介绍了谷歌师兄的算法刷题笔记的相关资料,需要的朋友可以参考下
    2021-02-02
  • unicode utf-8 gb18030 gb2312 gbk各种编码对比

    unicode utf-8 gb18030 gb2312 gbk各种编码对比

    在修改一个cms的过程当中遇到一个php截取字符串的函数(当然得兼容中英字符了),因为对各种编码的字符范围和字符表示不清楚,感觉一头迷雾,虽然可以直接来调用这个函数
    2009-05-05
  • kettle在windows上安装配置与实践案例

    kettle在windows上安装配置与实践案例

    Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定,这篇文章主要介绍了kettle在windows上安装配置与实践案例,需要的朋友可以参考下
    2022-11-11

最新评论

?


http://www.vxiaotou.com