git --- cherry pick
- cherry pick
cherry pick
- Cherry Pick 是 Git 中的一个操作,它允许你选择某个分支的某次(或多次)提交,并将其应用到当前分支,而不会合并整个分支的所有更改。
cherry pick 的作用
- 只提取某个特定的提交(而不是整个分支的改动)。
适用于修复 Bug 或移植某个功能,而不想合并整个分支。
避免不必要的冲突,只引入需要的更改。
使用场景
- 修复 Bug:如果某个 Bug 在 main 分支修复了,但 dev 分支也需要这个修复,可以直接 cherry-pick 这个提交。
- 部分功能移植:某个功能在 feature-A 分支开发完成,但只想提取其中几个关键提交到 main 分支。
- 撤销错误的提交:如果某个提交被误合并到错误的分支,可以用 cherry-pick 把它移到正确的分支 (但是并不能删除错误的提交)
基本用法
git cherry-pick <commit-hash>
## <commit-hash> 是你想要应用的提交的哈希值(如 a1b2c3d)。
示例
示例
- 查看提交历史,找到要应用的提交:
git log --oneline
# 输出示例:
# a1b2c3d (HEAD -> main) Fix login bug
# e4f5g6h Add new feature
切换到目标分支(如 dev):
git checkout dev
执行 cherry-pick:
git cherry-pick a1b2c3d
# 这样,Fix login bug 这个提交就会被应用到 dev 分支。
选项 | 作用 |
---|---|
-n | (–no-commit) 只应用更改,但不自动提交 |
-e | (–edit) 在应用提交前允许修改提交信息 |
-x | 在提交信息里追加来源提交的哈希(推荐用于追踪来源) |
–abort | 如果发生冲突,放弃 cherry-pick 操作 |
–continue | 解决冲突后继续 cherry-pick |
注意事项
- 可能引发冲突:如果目标分支和原提交的上下文不同,可能需要手动解决冲突。
- 慎用:过度使用 cherry-pick 可能导致提交历史混乱,建议在必要时使用。
- 与 merge 的区别:merge 合并整个分支的改动,而 cherry-pick 只挑部分提交。
总结
Summary
- git cherry-pick 是一个灵活的工具,适合精准移植某个提交,而不是整个分支的改动。合理使用可以提高开发效率,但滥用可能导致代码历史难以维护