Git Cherry-Pick 详解:精准“摘取”提交的利器
一句通俗话介绍 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. 冲突处理流程
- 执行
git cherry-pick <hash>后出现冲突。 - 手动编辑冲突文件,解决冲突。
git add标记已解决的文件。git cherry-pick --continue完成操作。- 若想放弃:
git cherry-pick --abort
✅ 小贴士:
如果你只是临时想看某个提交改了什么,可以用 git show <hash>;
如果要批量迁移多个相关提交,考虑用 git rebase -i 或 git merge 可能更合适。
版权所有 © 【代码谷】 欢迎非商用转载,转载请按下面格式注明出处,商业转载请联系授权,违者必究。(提示:点击下方内容复制出处)
源文: Git Cherry-Pick 详解:精准“摘取”提交的利器 ,链接:https://www.daimagu.com/article/2512171243134213.html,来源:代码谷
评论