当前位置: 首页 > news >正文

Git合并固定分支的某一部分至当前分支

在 Git 中,通常使用 git merge 命令来将一个分支的更改合并到另一个分支。如果你只想合并某个分支的一部分代码,可以使用以下两种方法:

1.批量文件合并

1.1.创建并切换到一个新的临时分支

首先,从要合并的源分支(即要提取代码的分支)中创建并切换到一个新的临时分支。这样可以在该分支上进行修改,以便选择性地合并代码

git checkout -b temp-branch source-branch
  • temp-branch 是临时分支的名称
  • source-branch 是要提取代码的源分支的名称。

1.2.重置临时分支

使用 git reset 命令来将临时分支重置到源分支的某个特定提交,这样就可以选择性地选择要合并的代码

git reset <commit-hash>
  • commit-hash 是源分支中你想要合并代码的特定提交的哈希值
  • 如果你只想获取最新提交的哈希值,可以使用 git log 命令的 --oneline 选项,以简化输出
  • git log --oneline
    file

1.3.添加、提交和推送更改

在临时分支上进行必要的更改,然后将这些更改添加、提交并推送到远程仓库。

git add .
git commit -m "Partial merge from source-branch"
git push origin temp-branch

1.4.合并到目标分支

现在,你可以切换到目标分支,并使用 git merge 命令将临时分支中的更改合并到目标分支中。

git checkout target-branch
git merge temp-branch

1.5.解决可能的冲突

如果有任何冲突,在合并过程中会被提示,并且需要手动解决这些冲突

1.6.删除临时分支

如果你已经成功地合并了临时分支中的部分代码,那么可以将它删除

git branch -d temp-branch

通过以上步骤,你可以在 Git 中选择性地合并某个分支的部分代码到另一个分支中。记得在操作前做好备份,确保不会丢失重要的更改

2.部分文件合并

如果你只想合并分支 A 中的某几个文件到当前分支(假设为目标分支),你可以使用 git checkout 命令来检出分支 A 中的指定文件,然后将这些文件复制到当前分支,最后提交更改。以下是具体的步骤:

2.1.检出分支 A 中的指定文件

git checkout A <path/to/file1> <path/to/file2> ...
  • 其中 path/to/file1, path/to/file2, 等等是你想要合并的文件的路径。

2.2.将文件复制到当前分支

如果只是简单地想要覆盖当前分支上的对应文件,你可以直接将文件复制到当前工作目录中

2.3.添加、提交更改

添加并提交你所复制的文件到当前分支

git add .
git commit -m "Merge selected files from branch A"

这样就完成了只合并分支 A 中的指定文件到当前分支的操作。需要注意的是,这种方法不会保留分支 A 中的提交历史,它只是将特定文件的最新版本复制到当前分支,并创建一个新的提交。如果需要保留提交历史,你可能需要考虑使用 git cherry-pick 命令来选择性地将分支 A 中的特定提交合并到当前分支

3.git cherry-pick选择性合并文件

git cherry-pick 命令用于选择性地将一个或多个提交从一个分支应用到另一个分支上。这个命令可以用于合并单个提交或一系列提交,而不需要将整个分支合并过来。

3.1.git cherry-pick 的基本用法

git cherry-pick <commit-hash-1> <commit-hash-2> ...
  • commit-hash-1
  • commit-hash-2, 等等是你想要应用的提交的哈希值。

3.2.切换到目标分支

首先,确保你在要应用更改的目标分支上

git checkout target-branch

3.3.应用提交

然后使用 git cherry-pick 命令来应用你想要合并的提交

git cherry-pick <commit-hash-1> <commit-hash-2> ...

这将会将指定的提交应用到当前分支中

3.4.解决冲突

如果在 cherry-pick 过程中出现了冲突,需要手动解决这些冲突

3.5.提交更改

解决冲突后,使用 git commit 来提交这些更改

git commit

如果你只是想要使用默认提交消息,你可以直接运行 git commit 命令,Git 将会使用预设的提交消息。
这样,你就可以使用 git cherry-pick 命令将特定提交从一个分支合并到另一个分支中

相关文章:

  • 如何使用useMemo来优化性能
  • 基于 Amazon EC2 和 Amazon Systems Manager Session Manager 的堡垒机的设计和自动化实现
  • jsx语言和js语言的区别
  • Cartographer框架简述
  • 【踩坑专栏】主机ping虚拟机失败
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • 人工智能学习与实训笔记(二):神经网络之图像分类问题
  • 单例模式的介绍
  • 鸿蒙自定义侧滑菜单布局(DrawerLayout)
  • 《VitePress 简易速速上手小册》第8章 安全性与部署(2024 最新版)
  • ChatGPT丨成像光谱遥感技术中的AI革命:ChatGPT应用指南
  • Excel练习:双层图表
  • Linux | Ubuntu通过USB访问Redmi K40存储出现xxx was not providedby any .service files错误
  • 机器学习面试:逻辑回归与朴素贝叶斯区别
  • Oracle普通用户启停JOB报错ORA 27486权限不足
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 2017 年终总结 —— 在路上
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • dva中组件的懒加载
  • Idea+maven+scala构建包并在spark on yarn 运行
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • isset在php5.6-和php7.0+的一些差异
  • Java精华积累:初学者都应该搞懂的问题
  • Lucene解析 - 基本概念
  • Spring框架之我见(三)——IOC、AOP
  • SQLServer之创建显式事务
  • V4L2视频输入框架概述
  • 反思总结然后整装待发
  • 高程读书笔记 第六章 面向对象程序设计
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 前端代码风格自动化系列(二)之Commitlint
  • 前言-如何学习区块链
  • 浅谈Golang中select的用法
  • 使用parted解决大于2T的磁盘分区
  • 跳前端坑前,先看看这个!!
  • 原生Ajax
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​Python 3 新特性:类型注解
  • ​ubuntu下安装kvm虚拟机
  • #每日一题合集#牛客JZ23-JZ33
  • #前后端分离# 头条发布系统
  • (8)STL算法之替换
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (算法)前K大的和
  • (五)MySQL的备份及恢复
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)EOS中账户、钱包和密钥的关系
  • (转)程序员技术练级攻略