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

相关推荐
深海鱼在掘金2 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
noravinsc3 天前
关于Git Flow
git
蜜獾云3 天前
在Git中配置用户名和密码
git
scx_link3 天前
通过git bash在本地创建分支,并推送到远程仓库中
开发语言·git·bash
南大白3 天前
IntelliJ IDEA 运行时的 JVM 本地内存溢出崩溃
git
码农小旋风3 天前
Claude Code 基础用法大全:对话、分析、修改、测试、Git 和工作流
人工智能·git·chatgpt·claude
南大白3 天前
Git 撤回提交完整方案
git
像风一样的男人@3 天前
python --实现代理服务器
git·ui
sbjdhjd3 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
码云数智-大飞3 天前
Go Channel 详解:并发通信的正确姿势
前端·数据库·git