Git Cherry Pick
git cherry-pick
是一个强大的命令,它允许通过引用选择任意 Git 提交并将其附加到当前工作的 HEAD 中。Cherry picking 是指从分支中挑选一个提交并将其应用于另一个分支的行为。git cherry-pick
对于撤销变更可能很有用。例如,假设不小心向错误的分支提交了提交。您可以切换到正确的分支,然后 cherry-pick 提交到它本该归属的位置。
什么时候使用 git cherry pick
git cherry-pick
是一个有用的工具,但并不总是最佳实践。Cherry picking 可能会导致重复提交,在许多情况下,cherry picking 也会起作用,但传统的合并更受青睐。话虽如此,git cherry-pick
是一个适用于某些场景的便捷工具...
团队协作
通常,团队会发现个人成员在使用或围绕相同的代码工作。也许新产品功能有后端和前端组件。两个产品部门之间可能有一些共享代码。也许后端开发人员创建了一个前端也需要使用的数据结构。前端开发人员可以使用 git cherry-pick
来选择创建这个假设数据结构的提交。这个选择将使前端开发人员能够继续在项目方面取得进展。
相关资料
如何移动完整的 Git 存储库
查看解决方案
了解 Bitbucket Cloud 的 Git
错误修复
发现错误时,尽快向最终用户提供修复非常重要。举个例子,假设开发人员已经开始开发一项新功能。在新功能开发过程中,他们发现了一个之前存在的错误。开发人员创建了一个显式提交来修补这个错误。这个新的补丁提交可以直接在 main
分支中挑选,以在错误影响更多用户之前修复错误。
撤销变更并恢复丢失的提交
有时 feature
分支可能会过时而无法合并到 main
分支中。有时,拉取请求可能会在不合并的情况下关闭。Git 永远不会丢失这些提交,通过 git log 和 git reflog 等命令,可以找到这些提交,让它们恢复活力。
什么时候使用 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
中使用提交 `f`。首先,我们确保我们在 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
和 --quit
,这些选项在 git merge 和 git rebase 方面有更深入的介绍。
摘要
Cherry picking 是一个强大且方便的命令,在某些情况下非常有用。不应滥用 cherry picking 来代替 git merge 或 git rebase。需要 git log 命令来帮助查找 cherry pick 的提交。
分享此文章
下一主题
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。