Close

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 徽标
查看解决方案

了解 Bitbucket Cloud 的 Git

错误修复


发现错误时,尽快向最终用户提供修复非常重要。举个例子,假设开发人员已经开始开发一项新功能。在新功能开发过程中,他们发现了一个之前存在的错误。开发人员创建了一个显式提交来修补这个错误。这个新的补丁提交可以直接在 main 分支中挑选,以在错误影响更多用户之前修复错误。

撤销变更并恢复丢失的提交


有时 feature 分支可能会过时而无法合并到 main 分支中。有时,拉取请求可能会在不合并的情况下关闭。Git 永远不会丢失这些提交,通过 git loggit 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 mergegit rebase 方面有更深入的介绍。

摘要


Cherry picking 是一个强大且方便的命令,在某些情况下非常有用。不应滥用 cherry picking 来代替 git mergegit rebase。需要 git log 命令来帮助查找 cherry pick 的提交。


分享此文章
下一主题

推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

人们通过满是工具的墙进行协作

Bitbucket 博客

Devops 示意图

DevOps 学习路径

与 Atlassian 专家一起进行 Den 功能演示

Bitbucket Cloud 与 Atlassian Open DevOps 如何协同工作

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up