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(恢复到操作前状态)

相关推荐
bigHead-19 分钟前
Git 修改远程仓库地址的几种方法
git
杀手不太冷!1 小时前
Jenkins的安装与使用;git clone url的时候,url为http和ssh时候的区别
git·http·jenkins
qq_229058012 小时前
GIT使用方法
git
YMGogre2 小时前
Git 多人协作开发
git
凯子坚持 c12 小时前
Git 多人协作深度解析:从工作流模拟到仓库维护
git
要站在顶端14 小时前
克隆大型仓库卡住(7%每次就卡住了)
git
五月底_15 小时前
上传大量文件到github repo
git·github
rannn_1111 天前
【Git教程】概述、常用命令、Git-IDEA集成
java·git·后端·intellij-idea
春日见1 天前
虚拟机上由于网络问题无法正常git clone
linux·服务器·网络·人工智能·git·ubuntu·debug
冉佳驹1 天前
Linux ——— Git的核心操作流程、进程状态及环境变量相关知识
linux·git·进程·环境变量·进程状态·fork