git-git cherry-pick(从分支挑选特定提交-哈希值)更改应用到当前分支

1.git chery-pick

挑选单个或多个提交(commit),应用到当前分支。不像merge合并整个分支的提交,也不像rebase重写提交历史,而是复制提交修改。

应用场景

修复线上bug:从开发分支挑选特定bug修复提交,应用到生产分支;

补全功能:某个分支需要单个或多个提交,不合并整个分支;

纠正提交错误:比如提交错分支,将提交搬迁到正确的分支;

2.相关命令

基础语法
javascript 复制代码
# 1. 挑选单个提交(最常用)
git cherry-pick <提交哈希>

# 2. 挑选多个连续提交(左闭右开,包含 A,不包含 B)
git cherry-pick <提交A哈希>..<提交B哈希>

# 3. 挑选多个连续提交(包含 A 和 B)
git cherry-pick <提交A哈希>^..<提交B哈希>

# 4. 挑选多个不连续提交
git cherry-pick <哈希1> <哈希2> <哈希3>

# 5. 常用选项
git cherry-pick -n <哈希>  # 不自动创建提交(仅将修改应用到工作区,可手动调整后提交)
git cherry-pick -e <哈希>  # 应用后编辑提交信息
git cherry-pick --abort    # 冲突时放弃操作,恢复到操作前状态
git cherry-pick --continue # 解决冲突后继续操作
查看远程提交的哈希值
javascript 复制代码
git log target<分支名>
使用cherry-pick转移提交
javascript 复制代码
git cherry-pick <commitHASH>

3.应用场景

  • main:生产分支(需要修复 bug);

  • dev:开发分支(已提交 bug 修复,哈希为 a1b2c3d)。

需求:将 dev 分支的 a1b2c3d 提交(bug 修复),应用到 main 分支。

步骤 1:切换到目标分支(要应用提交的分支)

javascript 复制代码
git checkout main  # 或 git switch main(Git 2.23+)

步骤 2:执行 cherry-pick 挑选提交

先查看 dev 分支的提交历史,获取目标提交哈希(比如 a1b2c3d):

javascript 复制代码
git log dev --oneline  # 简洁显示提交历史,格式:哈希 提交信息
# 输出示例:a1b2c3d fix: 修复登录按钮点击无响应问题

挑选该提交

javascript 复制代码
git cherry-pick a1b2c3d

步骤 3:处理冲突(如有)

冲突提示如下

javascript 复制代码
Auto-merging src/components/Login.vue
CONFLICT (content): Merge conflict in src/components/Login.vue
error: could not apply a1b2c3d... fix: 修复登录按钮点击无响应问题
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
  • 打开冲突文件(如 Login.vue),找到冲突标记(<<<<<<< ======= >>>>>>>),手动编辑保留正确代码;

  • 标记冲突已解决:git add src/components/Login.vue

  • 继续 cherry-pick 流程:git cherry-pick --continue

  • (可选)编辑提交信息,保存退出即可完成提交。

如果想放弃冲突处理:git cherry-pick --abort(恢复到操作前状态)

相关推荐
AIMath~6 小时前
向github中上传文件过大超过50M怎么办
网络·git·github
AIMath~10 小时前
如何将一个新的文件夹使用git 工具提交到github新仓库中
git·github
满天星830357710 小时前
【Git】原理及使用(二) (版本回退)
linux·git
愿天垂怜11 小时前
【C++脚手架】ffmpeg 库的介绍与使用
linux·服务器·开发语言·c++·ide·git·ffmpeg
月夜的风吹雨11 小时前
Linux 基础开发工具详解:从 yum 到 gdb 实战指南
linux·git·ubuntu·centos·vim
好运yoo12 小时前
git cherry-pick
git
不是光头 强12 小时前
Obsidian Git 插件安装与配置完全指南
git
.千余12 小时前
【C++】C++核心语法:函数重载与缺省参数原理与避坑
c语言·开发语言·c++·经验分享·笔记·git·学习
meowrain13 小时前
Git HTTPS Token 凭据配置指南
git·网络协议·https
Ws_1 天前
Git + Gerrit 第二课:diff、暂存区与撤销修改
git