Git Cherry-Pick 详解:精准“摘取”提交的利器

编程 (382) 2025-12-17 12:43:39

一句通俗话介绍 Git Cherry-Pick:

“cherry-pick 就是从别的分支‘摘’一个或几个提交,直接‘贴’到当前分支上。”

 

详细使用说明

1. 作用

git cherry-pick 允许你选择一个或多个特定的提交(commits),并将它们的内容应用到当前所在的分支上。它不会合并整个分支,只复制指定的提交。

2. 基本语法

git cherry-pick <commit-hash>
  • <commit-hash> 是你想“摘取”的提交的完整或简短哈希值。
  • 可以一次指定多个提交:

    git cherry-pick <hash1> <hash2> <hash3>
  • 或者指定一个范围(注意:不包含起始提交):

    git cherry-pick <start-hash>..<end-hash>
    # 例如:git cherry-pick abc123..def456

3. 使用场景

  • 修复了一个 bug 并提交到了 dev 分支,但需要立刻把该修复同步到 main 分支。
  • 想把某个功能中的个别提交提前用在当前分支,而不合并整个功能分支。
  • 误操作后想从历史中恢复某次更改。

4. 操作示例

假设你在 main 分支,想把 feature 分支上的某次提交(比如 a1b2c3d)拿过来:

git checkout main
git cherry-pick a1b2c3d

Git 会创建一个新的提交(哈希不同,但内容相同),应用在 main 上。

5. 注意事项

  • 会产生新提交:cherry-pick 不是“移动”提交,而是复制内容生成新提交,因此提交哈希会变。
  • 可能冲突:如果目标分支和原提交上下文差异大,可能会出现合并冲突,需手动解决。
  • 避免滥用:频繁 cherry-pick 容易造成历史混乱,建议在必要时使用(如热修复)。

6. 常用选项

  • -n / --no-commit:只暂存更改,不自动创建提交(适合调试或组合多个 cherry-pick)。
  • -e / --edit:在提交前编辑提交信息。
  • --abort:中止当前 cherry-pick 操作(如遇冲突想放弃)。
  • --continue:解决冲突后继续完成 cherry-pick。

7. 冲突处理流程

  1. 执行 git cherry-pick <hash> 后出现冲突。
  2. 手动编辑冲突文件,解决冲突。
  3. git add 标记已解决的文件。
  4. git cherry-pick --continue 完成操作。
  5. 若想放弃:git cherry-pick --abort

 

小贴士
如果你只是临时想看某个提交改了什么,可以用 git show <hash>
如果要批量迁移多个相关提交,考虑用 git rebase -igit merge 可能更合适。

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
一句通俗话介绍 Git Cherry-Pick:“cherry-pick 就是从别的分支‘摘’一个或几个提交,直接‘贴’到当前分支上。” 详细使用说明1. 作用
在现代软件开发中,版本控制是团队协作的基石。而 Git 作为最流行的分布式版本控制系统,其强大的分支功能让开发者能够高效地并行开发、测试和发布代码。然而,如何合
Merge 与 Rebase不知怎么,git rebase 命令被赋予了一个神奇的污毒声誉,初学者应该远离它,但它实际上可以让开发团队在使用时更加轻松。你可以
idea git合并代码说 please tell me who are you..  
git版本需要大于2.28.0 执行命令 git config --global init.defaultBranch main 搞定
ideagit回滚版本
    // 删除本地分支 git branch -d localBranchName // 删除远程分支 git push origin --delete remoteB...
一句话先说透(请刻进 Git 肌肉记忆):git rebase 就是把你本地的“新活儿”(提交)先拿下来,等别人最新的活儿干完后,再把你的活儿重做一遍,假装你一
回顾这个模型构思于 2010 年,距今已超过十年——而 Git 本身也才刚刚诞生不久。在这十年间,git-flow(本文所描述的分支模型)在众多软件团队中变得极
处理回滚有两种方案是软回滚,保留中间的git记录,让最新的commit代码与所选恢commit复版本相同。硬回滚,直接干掉所选回滚记录前的所有commit记录方法一(软回滚)(正式多人项目推荐)...
继上一篇deepseek Windows安装和入门使用 本地部署deepseek只能在cmd窗口使用,体验感不好。这里使用一个可视化工具Cherry Studi
stash命令作用stash 命令能够将还未 commit 的代码暂存起来,让你的工作目录变得干净,同时讲解idea中stash界面使用操作。应用场景某一天你正
在html中,使用css控制实现图片下方浮动一行文字说明,效果图如下:代码:&lt;%@ page language="java" contentType="text
问题描述git 提交代码报错 :error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413导致原因1. 本...
eclipse如何关闭java代码中某些部分/片段代码不被格式化,eclipse,代码部分不被格式化,How to turn off the Eclipse code formatter for...