git将另一个分支的指定commit合并到另一个分支上

前言

佛祖保佑, 永无bug。Hello 大家好!我是海的对岸!

这次碰到的情况是,我要将当前一个分支下的代码合并到另一个分支上去,去打包部署,平时涉及到的git操作基本都是拉取线上代码本地写代码再提交再拉取最新代码,( 有冲突, 就解决冲突,解决完了,) 再推送,倒是这次这个合并分支平时用的比较少,这次特此记录一下

开干

我一开始是在 【develop分支】上开发功能的,功能开发完,需要合并到 【develop5.0.2分支】上进行发布。

因为 develop分支 属于 公司内部产品开发。

而 develop5.0.2分支,则是我们基于产品 演化出来的具体一个对外的项目 。

而我开发的这个功能,正是当前这个项目需要的功能(当然也是作为产品的一个通用功能,放在了develop里面开发)。

我需要把我提交到 develop分支上的代码 合并到 develop5.0.2 分支上去。

步骤1,查看所有分支

切换分支之前,先查看所有分支

sh 复制代码
git branch -a

以我当前项目为例

步骤2.1,切换分支

我们要怎么做?我们需要做2件事:

  1. 先把线上的 【develop5.0.2】分支拉取下来
  2. 把develop分支上我提交的代码的 commit id 找到,后面要用

首先,把本地的 develop 分支 切换成 线上的 develop5.0.2分支

sh 复制代码
# 切换分支命令
git checkout -b develop5.0.2 origin/develop5.0.2

一个小坑

这里,可能有人会碰到一个小坑 (没错,正在在下,刚踩的坑,还热乎呢)

如果一开始你没弄明白,直接 来个 【git checkout develop5.0.2】命令 。那么,你这是自己在本地创建了一个叫 develop5.0.2的分支,你本地创建的这个分支 和 线上的那个 5.0.2是没有任何联系的

sh 复制代码
【git checkout xxx】命令,会切换到指定名称叫 xxx的分支,如果 xxx分支不存在,则会自动创建一个叫 xxx的分支。

这个时候,你需要把你本地创建的这个【develop5.0.2】给删掉,输入【git checkout -d develop5.0.2】命令,删掉自己创建的本地分支。重新去切换线上的5.0.2分支

如果不删掉你当前这个新建的分支,就直接去切换线上的分支,就会提示,要切换的分支已经存在

不让你 把线上的给切换回来。

到这里,第一步已经完成了,接下是第二步。

步骤2.2,commit id

如果你安装了小乌龟,你查看日志的时候,可以看到 commit id。

如果你没有安装小乌龟,那就直接在 git 终端里 输入 【git log】 也能查看

也能 看到 每一次 提价的 commit id。

如果 你想 退出 查看git日志,就在键盘上 输入英文状态下的 "q" 。就能退出日志

现在,我把我三次在 develop分支下 提价的 commit id 复制到 记事本里,临时存放下

然后 从 develop分支 切换到 develop5.0.2 分支,开始合并我的代码

sh 复制代码
命令:
git cherry-pick [commit-id]     表示 将另一个分支(develop)的指定commit-id合并到本地分支(develop5.0.2)

实操:
git cherry-pick 543a4ce258e9cac1095eaf0d5bb0b0a152d61149

你可以选择 一次一次的进行 提交记录 commit id 的 合并,我就是这样的

你也可以,将多个提交记录 用 空格 隔开。一次性合并所有的提交记录。

步骤4,推送

确认本地 【develop5.0.2】已经获取到另一个分支【develop】的指定提交后,然后就可以直接通过git push提交代码了(当然,老规矩,推送之前,先进行拉取操作。 先git pull拉取最新的代码呦!否则可能就会出现meger冲突)

有人会有疑问,我把一个分支上的代码 合并到另一个分支上,会不会对另一个分支上后面的提交造成影响。覆盖掉后面的代码 ?

答案是不会,Git的合并操作是将两个分支的修改内容合并到一起,保留各自的提交历史。

还有一个疑问?

我在develop分支上提交过3次,我之前想的是,我就把最后一次提交的commit 给 合并到 develop5.0.2,行不行?

但是 转念一想,我最后一次提交是基于第二次提交的代码上调整的,第二次提交又是基于第一次的基础上调整的。第一次提交就是我的代码最开始, 从无到有。想来想去,还是把三次提交的 commit id 给 完完整整的 合并到 5.0.2的分支上去了。

jym,你们觉得呢,是直接把最后一次的commit id 合并过去,还是把所有的commit id 完完整整的合并过去?

参考

1. git命令-切换分支

2. git如何将另一个分支的指定commit合并到另一个分支

3. 如何退出 git log 和 git commit 状态

相关推荐
huanxiaD1 小时前
要将Git仓库的master分支回滚到上一版本
git
狐573 小时前
解决 Git SSL 连接错误:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno
git·网络协议·ssl
Andya_net17 小时前
Git | git revert命令详解
git
黑客Jack21 小时前
[Python/网络安全] Git漏洞之Githack工具基本安装及使用详析
git·python·web安全
Cikiss1 天前
Git分支——《Pro Git》
java·git·后端
Cikiss1 天前
Git 基础——《Pro Git》
git·后端·源代码管理
多多*1 天前
后端技术选型 sa-token校验学习 下 结合项目学习 前后端登录
java·redis·git·学习·github·intellij-idea·状态模式
微臣愚钝1 天前
【git】-3 github创建远程仓库,上传自己的项目,下载别人的项目
git·github
code袁1 天前
校园跑腿小程序---轮播图,导航栏开发
git·小程序·校园跑腿·notepad++·小程序开发
LostSpeed2 天前
git - 用SSH方式迁出远端git库
git·ssh