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

相关推荐
无限进步_4 小时前
C语言动态内存管理:掌握malloc、calloc、realloc和free的实战应用
c语言·开发语言·c++·git·算法·github·visual studio
程序员馨馨9 小时前
git常用命令学习以及冲突解决
git·功能测试·学习
1***815316 小时前
Git游戏开发案例
git
likuolei18 小时前
Git 工作区、暂存区和版本库
数据库·git
HAPPY酷21 小时前
git配置及使用
git
sg_knight21 小时前
IntelliJ IDEA 实用插件:GitToolBox 使用指南
java·ide·git·intellij-idea·插件·gittoolbox
青靴1 天前
Git Hooks 实现 CI/CD 进阶实践 -- 根据实际需求添加功能
git·elasticsearch·ci/cd
LiuYaoheng1 天前
Git配置SSH Key到GitHub的详细教程
git·ssh·github
x***B4111 天前
Git数据分析实战
git·数据挖掘·数据分析