git cherry-pick的用法
git cherry-pick 是一个非常有用的 Git 命令,它允许你将某个提交(commit)的更改应用到当前分支上,而不需要合并整个分支。
基本用法
git cherry-pick <commit-hash>
这会将指定的提交应用到当前分支,并创建一个新的提交。
常用选项
-
选择多个提交:
git cherry-pick <commit1> <commit2> <commit3> -
选择一个范围的提交(不包括起始提交):
git cherry-pick <start-commit>..<end-commit> -
包括起始提交:
git cherry-pick <start-commit>^..<end-commit> -
不自动提交(只更新工作区和暂存区):
git cherry-pick -n <commit-hash> -
编辑提交信息:
git cherry-pick -e <commit-hash> -
遇到冲突时继续(用于批量cherry-pick):
git cherry-pick --continue -
放弃当前cherry-pick操作:
git cherry-pick --abort
使用场景
-
将修复的bug应用到多个分支:在维护分支上修复了一个bug,想把这个修复应用到主分支上。
-
部分合并功能:某个分支上有多个提交实现了不同功能,你只想合并其中的一部分。
-
撤销特定提交:可以通过cherry-pick反向提交来撤销特定更改。
注意事项
-
cherry-pick会创建新的提交,即使内容相同,哈希值也会不同。
-
如果遇到冲突,需要手动解决冲突后使用
git add标记已解决的文件,然后继续操作。 -
过度使用cherry-pick可能导致提交历史混乱,应谨慎使用。
-
对于需要合并大量提交的情况,考虑使用
git merge或git rebase可能更合适。
示例
# 查看提交历史找到要应用的提交哈希
git log --oneline
# 应用单个提交
git cherry-pick abc1234
# 应用多个不连续的提交
git cherry-pick abc1234 def5678
# 应用一个范围的提交
git cherry-pick abc1234..def5678
Do not communicate by sharing memory; instead, share memory by communicating.

浙公网安备 33010602011771号