git cherry-pick
是一个强大的命令,可以通过引用选择任意 Git 提交并将其附加到当前工作的 HEAD。Cherry Picking 是从一个分支中选择一个提交并将其应用到另一个分支的行为。git cherry-pick
可用于撤消更改。例如,假设不小心向错误的分支提交了一次提交。您可以切换到正确的分支并选择提交到它应该属于的位置。
什么时候使用 git cherry pick
git cherry-pick
是一个有用的命令,但并不总是最佳实践。Cherry Picking 可能会导致重复提交,并且在大多数情况下 Cherry Picking 会起副作用,因此首选传统的合并。不过对于一些场景来说,git cherry-pick
是一个方便的命令....
假如有这样一个场景,由于某些原因我们不得不将某个分支的某次提交合并到另外一个分支,此时使用 git merge 的话又过于繁琐,最快的方式就是使用 git cherry pick !
如何使用 git cherry pick
为了演示如何使用,git cherry-pick
让我们假设我们有一个具有以下分支状态的存储库:
a - b - c - d Main
\
e - f - g Feature
git cherry-pick
用法很简单,可以像这样执行:
git cherry-pick commitSha
在这个例子commit
中,Sha 是一个提交引用。您可以使用git log
. 在这个例子中,我们构建了假设我们想在main
. 首先,我们确保我们正在main
分支上工作。
git checkout main
然后我们使用以下命令执行cherry-pick:
git cherry-pick f
一旦执行,我们的 Git 历史将如下所示:
a - b - c - d - f Main
\
e - f - g Feature
f 提交已成功挑选到主分支
git cherry pick 的例子
git cherry pick
也可以传递一些执行选项。
-edit
-edit
选项将会使 git 在执行 cherry-pick 操作之前提示输入提交消息。
--no-commit
--no-commit
选项将执行cherry-pick,但不会进行新的提交,而是将目标提交的内容移动到当前分支的工作目录中。
--signoff
--signoff
选项将在cherry-pick提交消息的末尾添加一个“signoff”签名行。
除了这些有用的选项外,git cherry-pick
还接受各种合并策略选项。在git 合并策略 文档中了解有关这些选项的更多信息。
此外, git cherry-pick 还接受用于合并冲突解决的选项输入,这包括选项:--abort --continue
并且关于git merge 和git rebase--quit
更深入地介绍了此选项。