在 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

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 命令将特定提交从一个分支合并到另一个分支中

Git合并固定分支的某一部分至当前分支的更多相关文章

  1. Git合并特定commits 到另一个分支

    https://ariejan.net/2010/06/10/cherry-picking-specific-commits-from-another-branch/ http://blog.csdn ...

  2. Git合并分支出现的冲突解决

    人生不如意之事十有八九,合并分支往往也不是一帆风顺的. 我们准备新的分支newbranch. LV@LV-PC MINGW32 /c/gitskill (master)$ git checkout - ...

  3. git合并别的分支某次提交或合并

    合并别的分支某次提交 master分支上改了一个bug.提交到master分支.现在在dev分支上开发,需要把master分支上改的那个bug合过来.步骤是:先在master分支上查改那个bug的SH ...

  4. git 合并分支到master

    git 合并分支到master   假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add .git commit -m ‘dev'git push -u origin dev 然后 ...

  5. Git合并指定一系列commits到另一个分支

    Git合并指定文件到另一个分支经常被问到如何从一个分支合并特定的文件到另一个分支.其实,只合并你需要的那些commits,不需要的commits就不合并进去了. 合并某个分支上的单个commit首先, ...

  6. Git合并指定文件到另一个分支

    经常被问到如何从一个分支合并特定的文件到另一个分支.其实,只合并你需要的那些commits,不需要的commits就不合并进去了. 合并某个分支上的单个commit 首先,用git log或sourc ...

  7. git合并指定文件到另一分支

    经常被问到如何从一个分支合并特定的文件到另一个分支.其实,只合并你需要的那些commits,不需要的commits就不合并进去了. 合并某个分支上的单个commit 首先,用git log或sourc ...

  8. git合并分支上指定的commit

    merge 能够胜任平常大部分的合并需求.但也会遇到某些特殊的情况,例如正在开发一个新的功能,线上说有一个紧急的bug要修复.bug修好了但并不像把仍在开发的新功能代码也提交到线上去.这时候也许想要一 ...

  9. git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法

    git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...

  10. Git合并分支或者冲突

     假设冲突文件是 test/TestCase.php  下面分5种情况讨论. 1.本地不变.   然后远程别人有更新.   git pull   这种最简单,没有冲突,本地工作区直接更新   2.我本 ...

随机推荐

  1. Go-使用本地时间解析时间字符串

    字符串 ==> time.Time package main import ( "fmt" "log" "time" ) func m ...

  2. [转帖]Nginx优化与防盗链

    目录 一.配置Nginx隐藏版本号 1.第一种方法修改配置文件 2.第二种方法修改源码文件,重新编译安装 二.修改Nginx用户与组 三.配置Nginx网页缓存时间 四.实现Nginx的日志分割 五. ...

  3. [转帖]金仓数据库KingbaseES数据目录结构

    KingbaseES数据库结构 [kingbase@postgresV8]$ tree -LP2data/ . ├── data │ ├── base # 存储用户创建的数据库文件及隶属于用户数据库的 ...

  4. [转帖]Kafka-Kraft 模式架构部署

    news文章来源: Kafka-Kraft 模式架构部署 Kafka网址:https://kafka.apache.org/ PS:因环境原因此文档内端口都有修改! 1.去官网下载二进制包 PS:3. ...

  5. Firewall-cmd 启用NAT开放内网机器通过能上网的机器访问外网的方法

    Firewall-cmd 启用NAT开放内网机器通过能上网的机器访问外网的方法 背景说明 昨天的处置已经可以让外部可以使用唯一的电信IP地址访问内部交换机的服务器了. 但是今天的场景是想让内网交换机的 ...

  6. [转帖]Windows磁盘性能压测(1)-DiskSpd

    http://www.manongjc.com/detail/59-xrydhtisrajqsxn.html 本文章向大家介绍Windows磁盘性能压测(1)-DiskSpd,主要内容包括其使用实例. ...

  7. [转帖]【JVM】类加载机制

    什么是类的加载 将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产 ...

  8. 龙芯中标麒麟 上面安装libgdiplus的方法

    其实方法与之前的blog 基本上完全一样 但是发现有一个问题  安装完libgdiplus之后必须重启一下才能有效果... CentOS 安装libgdi的方法 1. 安装必须的包 1 yum ins ...

  9. Linux命令行从x度网盘下载数据

    技术背景 做开源项目的时候,尤其是现在的数据量越来越大,经常会面临到数据往哪里存放的问题.因为自己刚好有一个某度云的会员,看了一下还有几十个TB的空间还没用上.于是考虑把这个网盘变成一个定向共享数据的 ...

  10. Python 潮流周刊#22:Python 3.12.0 发布了!!

    你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中一则分享,不代表全部内容都是该主题,特此声明. 本周刊由 Python猫 出品,精心筛选国内外的 25 ...