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

相关推荐
ITKEY_16 小时前
git 命令行操作回退到指定版本
git
New_Horizons66618 小时前
Git 操作(使用git-commit-template)
git
慕容引刀21 小时前
或许你真的需要这个Git神器:让团队提交文案终于对齐了
人工智能·git·vscode·自然语言处理·github
jjh+++(求关注版)1 天前
git-命令速查清单
git
yanlaifan1 天前
git版本管理工具中的回车换行转换逻辑
git
小僧景贤2 天前
【零门槛入门】嵌入式新手极简 Git 上手教程
git·固件开发·嵌入式版本管理
克里斯蒂亚诺更新2 天前
云效和IDEA关于git的相通使用
git
Gavynlee2 天前
Git 操作问题排查与解决方案记录(Gitee 实战)
git·elasticsearch·gitee
邪修king2 天前
Re:Linux系统篇(十):从零上手 Git + GitHub(Ubuntu 环境实操完整版|个人代码归档必备)
linux·git·github
李可以量化2 天前
Redis 从了解到精通(三)下:性能基准测试与量化场景性能避坑指南
redis·git·python·量化交易·qmt·ptrade