首页 > 其他分享 >Git合并固定分支的某一部分至当前分支

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

时间:2024-02-21 13:11:59浏览次数:26  
标签:git 提交 cherry 合并 Git branch 分支

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

标签:git,提交,cherry,合并,Git,branch,分支
From: https://www.cnblogs.com/zhengfx/p/18024958

相关文章

  • JavaSE的第七步 —— 开发者工具、控制语句、if单分支,if-esle双分支,if-else if-else多
    一、开发者工具工欲善其事,必先利其器。作为一个学习Java的小白,一个好的工具对我们的开发来说可以说是事半功倍。在网上看了很多大神们都推荐的使用IDEA开发工具,前30天可以免费使用。而在30天后大神提供了相应的解决方法,只要想学,办法总比困难多。加油每一个求学者。二、控制语句......
  • SpringBoot使用git-commit-id-maven-plugin打包
    简介git-commit-id-maven-plugin是一个maven插件,用来在打包的时候将git-commit信息打进jar中。这样做的好处是可以将发布的某版本和对应的代码关联起来,方便查阅和线上项目的维护。至于它的作用,用官方说法,这个功能对于大型分布式项目来说是无价的。功能你是否经常遇到这样的......
  • ssts-hospital-web-master项目实战记录二:版本管理-git
    记录时间:2024-02-211.VSCode打开项目(1)文件→打开文件夹,对应的英文为File→OpenFolder(2)打开效果如下 2.VSCode本地项目托管 (1)打开终端:Terminal→NewTerminal(2)生成仓库:git init输入 git命令git init (3)添加到暂存区:git add.输入 git命令git add. (4)提......
  • Git第十三阶段:Rebase -> 调整commit 顺序
     一、缘起:我有一些修改涉及到旧的commit,我想把这种同类的修改放在一起,这就需要我把原来的commit放在"TOP"的位置。图示:这是我原来的commit:C1-C2-C_TARGET-C3-C4我想将它变成:C1-C2-C3-C4-C_TARGET二、进入我的测试gitrepo,我将生成三个测试commit,然后用gitrebase来调......
  • 细粒度的代码权限怎么做?极狐GitLab 代码所有者来帮忙
    本文作者:极狐GitLab资深解决方案架构师尹学峰如果基于固定的评审规则每次都是那几个人,当仓库很大的时候,各个模块(文件夹)责任人不同,其他人并不太懂。所以当修改不同的模块时候,基于固定规则就太死板了。而且容易造成「评审行为」的流于形式,因为固定的人可能根本看不懂实际MR变......
  • 【转】在 github 添加一个 SSH key
    参考:https://zhuanlan.zhihu.com/p/345846941、登录到 https://github.com,在设置页面的左侧菜单里找到SSHandGPGkeys2、打开GitBash3、运行 ssh-keygen-trsa-b4096-C"你的邮箱",注意要填写与github.com里相同的邮箱,不需要接收验证码啥的4、按回车三次,就成......
  • git
    丢弃webroot文件目录下的所有变更:gitcheckoutwebrootgit会将冲突的代码用<<<<<<<=======>>>>>>>标识出来,方便我们手动解决。在冲突标记中,=======之前表示的是ours分支,之后表示theirs分支。在使用merge时,指的是把指定分支合入当前分支,ours指的是当前分支,theirs指的是要被......
  • 酒香还怕巷子深?如何打造一个优秀的GitHub开源项目
    GitHub现在已经成了日常开发中必不可少的网站,日常工作和学习中要用到好多上面的开源项目,评价项目质量好坏的一个重要标准就是看Star和Fork的数量,如果看到个Star超过100以上的,基本上这个项目是靠谱的,如果超过1000过,那已经算是很流行了,至于一万以上的,基本上都是如雷贯耳的存在了。......
  • [GIT] GIT Commit Message 规范
    1概述本文主要用于总结自己的一套GitCommitMessage。1.1GitCommitMessage是什么?每次基于Git提交代码,都要写Commitmessage(提交说明),否则就不允许提交。$gitcommit-m"helloworld"-m参数:指定commitmesage1.2规范的提出背景软件工程团队多人协作时,c......
  • github raw文件cdn加速
    ref:https://blog.csdn.net/neve_give_up_dan/article/details/104817638可以使用该CDN网站进行加速:https://www.jsdelivr.com/官方示例:LoadanyGitHubrelease,commit,orbranch:/gh/user/repo@version/fileLoadexactversion:/gh/jquery/[email protected]/dist/jquery.m......