Git Cherry-pick

2025年3月17日 | 阅读 3 分钟

在 Git 中,Cherry-pick 指的是将某个分支中的一些提交应用到另一个分支。 如果您犯了一个错误,将更改提交到了错误的分支,但又不希望合并整个分支。您可以还原该提交并将其应用到另一个分支。

Git Cherry-pick

Cherry-pick 的主要目的是应用某些现有提交引入的更改。 Cherry-pick 会查看存储库历史记录中的先前提交,并更新作为上一次提交一部分的更改到当前工作树。 定义很简单,但是当有人尝试 cherry-pick 提交,甚至从另一个分支进行 cherry-pick 时,会变得更加复杂。

Cherry-pick 是一个有用的工具,但它并不总是一个好选择。 它可能导致重复提交以及其他场景,在这种场景下,更倾向于使用其他合并方式而不是 cherry-picking。 它适用于一些情况。 它与不同的方式(例如 **合并** 和 **变基** 命令)形成对比。 合并和变基通常可以在另一个分支中应用许多提交。

为什么使用 Cherry-Pick

假设您正在与一个开发团队合作,进行一个中型到大型的项目。 另一个团队成员提出了一些更改,您希望将其中一些更改应用到您的主项目中,而不是全部。 由于管理几个 Git 分支之间的更改可能成为一项复杂的任务,并且您不想将整个分支合并到另一个分支中。 您只需要选择一两个特定的提交。 从其他分支中选择一些更改到您的主项目分支中称为 cherry-picking。

可以使用 cherry-pick 的一些场景

场景 1:不小心在错误的分支中进行了提交。

Git cherry-pick 有助于应用错误地在错误分支中进行的更改。 假设我想在主分支中提交,但错误地在任何其他分支中进行了提交。 请参阅以下提交。

Git Cherry-pick

在上面的例子中,我想为 master 分支进行提交,但我不小心在 new 分支中进行了提交。 要将新分支的所有更改应用到 master 分支中,我们将使用 git pull,但对于这次提交,我们将使用 git cherry-pick 命令。 请参阅以下输出

Git Cherry-pick

在给定的输出中,我使用了 git log 命令来检查提交历史记录。 复制您想要在 master 分支上进行的特定提交 ID。 现在切换到 master 分支并在那里进行 cherry-pick。 请参阅以下输出

语法

输出

Git Cherry-pick

从给定的输出中,您可以看到我使用 git cherry-pick 命令粘贴了提交 ID,并将该提交应用到了我的 master 分支中。 您可以通过 git log 命令进行检查。

场景 2:进行了其他团队成员提出的更改。

Cherry-picking 的另一个用途是进行其他团队成员提出的更改。 假设我的一个团队成员在主项目中进行了一些更改,并建议将其用于主项目。 您可以在审查后进行 cheery-pick。

Cherry-pick 的用法

  • 对于 **团队协作** 来说,这是一个方便的工具。
  • 在 **修复错误** 的情况下,这是必要的,因为错误在开发分支中修复和测试,并带有其提交。
  • 它主要用于 **撤消更改和恢复丢失的提交**。
  • 您可以通过使用 git cherry-pick 而不是其他选项来 **避免无用的冲突**。
  • 当由于各种分支中的版本不兼容而无法进行完整的分支合并时,它是一个有用的工具。
  • git cherry-pick 用于访问引入到子分支中的更改,而不会更改分支。

下一主题Git Log