资讯详情

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,提交记录如下:

在这里插入图片描述

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

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

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

此时可以看到dev提交记录如下:

接下来shift选择红框记录,然后右键cherry-pick如下图所示:

然后就可以了push到远端了。

如果一切都有,cherry-pick本质也是合并代码。合并代码有冲突怎么办?会提示失败。这个时候该怎么办?idea如果我们合并,我们会给出更友好的提示,但我个人建议一旦发生冲突,就不要使用它cherry-pick合并的方法可以考虑使用2:idea compare功能方式。

2:idea compare功能

git根据以下操作,提供比较功能,通过比较,我们也可以轻松合并我们想要合并的内容:

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

3:最佳实践★★★★★

以下两种情况:

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

标签: 聚丙烯膜介质电容器cbb80b

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台