Git 中的 Cherry-Pick 合并提交

Abdul Jabbar 2023年1月30日
  1. Git 中的 git cherry-pick 命令
  2. Git 中的 Cherry-Pick 合并提交
Git 中的 Cherry-Pick 合并提交

当同一个团队的多个开发人员正在开发一个项目时,无论该项目的复杂性大小,处理和管理 Git 分支之间的更改都变得非常困难。

有时,我们需要将一些特定的提交合并到另一个分支中,而不是合并整个分支,为此,我们使用 Git 中的一个基本工具,即众所周知的 Cherry Picking。

当从仓库分支的整个提交列表中仅选择一个提交时,Cherry Picking 是一个很好的工具。

Git 中的 git cherry-pick 命令

git cherry-pick 是一个有影响力的命令,它允许将随机 Git 提交从仓库中的一个分支移动并添加到仓库当前工作的 HEAD。此命令还有助于撤消与团队过去开发相关的更改。

例如,如果我们不小心对错误的分支进行了提交,我们将转移到正确的分支,并在仓库的新分支中将提交挑选到正确的位置。

当使用 git mergegit rebase 时,来自一个分支的所有提交都是混合的。而 cherry-pick 命令使我们能够选择选定的提交进行同化。

Git 中的 Cherry-Pick 合并提交

挑选合并提交并不像看起来那么容易。当我们执行合并过程时,我们同时使用同一个仓库的两个分支。

例如,使用 Git 命令将分支 parent-B 合并到 parent-A 分支中。

因此,当我们要挑选特定的提交,即与两个父分支合并时,我们需要通过使用 -m 选项告诉 cherry-pick 命令应该使用 diff 来对抗哪个提交。我们将在以下命令中使用 commit hash 提及特定的父分支。

上述情况的语法解释如下。

git cherry-pick -m <commit hash>

让我们用上述命令的以下示例来解释这种情况。

M - N - O - P - Q (branch A)
     \     /
      R - S - T (branch B)

如上所示,P 是合并提交。如果我们运行 git cherry-pick 命令,Git 将传递有关该命令的警告。

所以现在我们必须用提交 id 提及父分支号。它将在以下命令中执行。

git cherry-pick -m 1 P

这个 cherry-pick 命令将从上述示例中的 O- P 获取所有提交。

我们还可以使用以下命令执行上述操作。

git cherry-pick -m 2 P

这将从上述示例中的 R- S- P 中选择所有提交。

注意:使用 merge commit 命令在分支中挑选提交过于有害,因此在使用它时,请始终谨慎行事。丢失过去提交的历史记录的风险很高。

它破坏了我们在父节点中所做的所有更改,并且我们没有在那个提交中定义 -m

作者: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn