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

Git:把单个commit合到本地分支

背景

git cherry - pick命令用于将单个或多个提交从一个分支复制到另一个分支,以下是一些常见的使用背景:

1. 修复特定分支的问题

当你在开发分支(如feature分支)上发现一个重要的问题修复提交,而这个修复也需要应用到主分支(如mainmaster)或其他稳定分支时,就可以使用git cherry - pick。这样能避免合并整个开发分支可能带来的不必要的代码变动。
比如,在feature - new - feature分支上修复了一个导致程序崩溃的bug,该修复对应的提交哈希为abc123,同时主分支main也受此问题影响,你就可以在main分支上执行git cherry - pick abc123,将该修复应用到主分支。

2. 同步部分功能

不同的开发团队或开发者可能基于同一个基础分支创建了不同的功能分支进行开发。如果某个功能分支上有部分提交实现的功能也适用于其他分支,但又不想合并整个功能分支,就可以使用git cherry - pick来复制这些特定的提交。
例如,团队A在branch - A上开发了几个小功能,其中一个功能也对团队B正在开发的branch - B有用,团队B就可以挑选出对应的提交,使用git cherry - pick将其应用到branch - B

3. 回滚误删除的提交

当不小心删除了某个重要的提交,但又不想通过复杂的操作来恢复整个提交历史时,可以使用git cherry - pick。如果能找到误删除提交的哈希值,就可以将其重新应用到当前分支。
比如,在一次错误的git reset操作后,误删了一个关键提交def456,可以在当前分支执行git cherry - pick def456来恢复这个提交。

4. 维护多版本代码

在同时维护多个版本的软件时,一个版本上的修复可能也需要应用到其他版本。通过git cherry - pick可以方便地将这些修复提交从一个版本分支复制到其他版本分支。
例如,公司同时维护软件的v1.xv2.x版本,在v1.x分支上修复了一个兼容性问题,对应的提交哈希为ghi789,为了让v2.x版本也具备这个修复,在v2.x分支上执行git cherry - pick ghi789即可。

使用

若要将单个commit合并到你的分支,可使用git cherry-pick命令。下面为你详细介绍操作步骤:

1. 确认当前分支

首先你得保证自己处于想要接收该commit的目标分支。你可以运用git branch命令查看当前分支,并且用git checkout命令切换到目标分支。

# 查看当前所有分支
git branch
# 切换到目标分支
git checkout <目标分支名>

2. 获取要合并的commit的哈希值

你需要知晓想要合并的commit的哈希值。可使用git log命令查看提交历史,进而获取该commit的哈希值。

git log

执行上述命令后,会展示出提交历史,其中每行开头的一长串字符便是commit的哈希值。

3. 使用git cherry-pick合并单个commit

获取到commit的哈希值后,就能使用git cherry-pick命令将该commit合并到当前分支。

git cherry-pick <commit哈希值>

4. 处理可能出现的冲突

若在合并过程中出现冲突,你需要手动解决这些冲突。解决冲突之后,使用以下命令标记冲突已解决并继续合并:

# 标记冲突已解决
git add <冲突文件>
# 继续合并
git cherry-pick --continue

示例

假设你要把feature分支上的一个commit合并到main分支,可按如下步骤操作:

# 切换到main分支
git checkout main
# 获取feature分支上要合并的commit的哈希值
git log feature
# 假设获取到的commit哈希值为abcdef123456
git cherry-pick abcdef123456

通过上述步骤,你就能够把单个commit合并到指定分支了。


http://www.kler.cn/a/517113.html

相关文章:

  • 代码随想录 二叉树 test 2
  • 软件测试 —— jmeter(2)
  • H3C-无线WLAN配置案例(二层隧道转发)
  • HarmonyOS Next构建工具 lycium 原理介绍
  • ES6语法
  • windows平台通过命令行安装前端开发环境
  • cursor把md转换成pdf
  • 电子应用设计方案102:智能家庭AI鱼缸系统设计
  • Redis面试题每日20道【其三】
  • 在宝塔安装部署mindoc
  • C# 使用HttpClient进行Post请求总是出现超时问题的优化
  • 一文了解二叉树的基本概念
  • AD7606, 逐次逼近型ADC以及一次被GPT坑了的过程.
  • vue + element-ui 组件样式缺失导致没有效果
  • Go中的三种锁
  • 实践深度学习:构建一个简单的图像分类器
  • c语言中的位域详解
  • mac 通过 Homebrew 安装 git 遇到的问题
  • ECS中实现Nginx四层和七层负载均衡以及ALB/NLB实现负载均衡
  • react install
  • Langchain+文心一言调用
  • SOME/IP服务接口
  • 干货分享|算法竞赛真题讲解2
  • Liunx上Jenkins 持续集成 Java + Maven + TestNG + Allure + Rest-Assured 接口自动化项目
  • 从语音识别到图像识别:AI如何“看”和“听”
  • 状态模式——C++实现