在 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. [转帖]JVM中年轻代里的对象什么情况下进入老年代?以及老年代垃圾回收算法-标记整理算法

    1.躲过15次GC之后进入老年代 系统刚启动时,创建的各种各样的对象,都是分配在年轻代里. 随着慢慢系统跑着跑着,年轻代满了,就会出发Minor GC ,可能1%的少量存活对像转移到空着的Surviv ...

  2. [转帖]awk的printf格式化输出

    https://www.cnblogs.com/chanix/p/12738097.html awk的printf格式化输出20121108 Chenxincat sort_result.txt223 ...

  3. [转帖]jmeter必备正则表达式

    元字符 .  注意是一个点号,表示匹配任意单个字符 \d 表示匹配任意单个数字 [0-9] 等价于0-9 [a-zA-Z] 等价于所有的大小写字母 限定符 +  加号,表示匹配至少大于1次(1次或多次 ...

  4. [转帖]PostgreSQL(三) 内存参数优化和原理(work_mem)内存表 pgfincore插件使用方法

    1.常用内存参数 1.1 shared_buffers shared_buffers是PostgreSQL用于共享缓冲区的内存,是由8kb大小的块所形成的数组.PostgreSQL在进行更新.查询等操 ...

  5. [转帖]Web性能优化工具WebPageTest(三)——本地部署(Windows 7版本)

    http://www.zlprogram.com/Show/30/30117.shtml 这次先能够使用PC端的浏览器测试,首先需要下载官方的发布版本"WebPageTest 3.0&quo ...

  6. [转帖]深入理解Redis的scan命令

    熟悉Redis的人都知道,它是单线程的.因此在使用一些时间复杂度为O(N)的命令时要非常谨慎.可能一不小心就会阻塞进程,导致Redis出现卡顿. 有时,我们需要针对符合条件的一部分命令进行操作,比如删 ...

  7. [转帖]Linux kernel内存管理之overcommit相关参数

    前言 了解 linux kernel内存管理,首先可以从用户空间的角度来看kernel的内存管理,执行ls /proc/sys/vm的命令,就可以看到vm运行的所有参数,其中就包含了跟overcomm ...

  8. Linux 清理 防火墙已有IP地址的方法

    最简单的处理 for i in `firewall-cmd --zone=trusted --list-sources` ;do firewall-cmd --zone=trusted --remov ...

  9. Stream流处理快速上手最佳实践

    一 引言 JAVA1.8得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念Stream流式思想类似于工厂车间的"生产流水线",Stream流不是一种数据结构, ...

  10. ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析

    目录 建表 数据存储 主键和索引在查询中的表现 主键的选择 选择与排序键不同的主键 索引和分区在查询中的应用 部分单调主键的使用 跳数索引 可用的索引类型 并发数据访问 列和表的 TTL 列TTL 表 ...