有没有这种困惑,就是在一个分支上开发一堆功能,提交了很多 commit,但是突然上级告诉你,只上一个功能,你是不是束手无策,需要在这个分支上重新检出新分支,然后把不上的代码全部删掉。等后续需要的时候还无法 commit,需要再全部一点点加回来。
现在你有一个新技能,他可以让你找出需要的 commit,然后从原分支提炼出来,放到新分支里。
git cherry-pick
是一个 Git 命令,用于将单个提交从一个分支应用到另一个分支。这个命令非常有用,当你想要将一个或多个特定的提交从一个分支移植(或“拾取”)到你当前所在的分支时。
以下是如何使用 git cherry-pick
的基本步骤:
-
找到提交的哈希值:
首先,你需要找到你想要拾取的提交的哈希值。这可以通过git log
命令完成,或者在 Git 的图形化界面中查找。例如:git log --oneline
这将显示提交的简短哈希值和提交信息。
-
切换到目标分支:
接着,切换到你想要应用提交的分支。例如,如果你想要将提交拾取到master
分支,你需要先切换到master
分支:git checkout master
-
执行 cherry-pick 操作:
使用git cherry-pick
命令加上你想要拾取的提交的哈希值。如果有多个提交,可以一次性指定多个哈希值,用空格分隔。例如:git cherry-pick <commit-hash>
如果你想要拾取多个提交,可以这样做:
git cherry-pick <commit-hash1> <commit-hash2> <commit-hash3>
-
解决可能出现的冲突:
如果在拾取过程中出现冲突,Git 会暂停操作并让你解决冲突。你需要手动编辑冲突文件,并使用git add
命令标记它们为已解决。然后,继续 cherry-pick 操作:git cherry-pick --continue
如果你决定不进行 cherry-pick 操作并取消当前的操作,可以使用:
git cherry-pick --abort
-
推送到远程仓库(如果需要):
一旦 cherry-pick 操作成功完成,并且所有提交都已推送到远程仓库,你可以使用git push
命令将更改推送到远程分支:git push origin master
请注意,cherry-pick
操作会创建新的提交哈希值,即使它们与原始分支中的提交内容相同。这是因为提交的元数据(如作者、日期等)可能会发生变化。因此,拾取的提交将不会与原始提交具有相同的哈希值。