Git 中的 Cherry-Pick 合并提交
当同一个团队的多个开发人员正在开发一个项目时,无论该项目的复杂性大小,处理和管理 Git 分支之间的更改都变得非常困难。
有时,我们需要将一些特定的提交合并到另一个分支中,而不是合并整个分支,为此,我们使用 Git 中的一个基本工具,即众所周知的 Cherry Picking。
当从仓库分支的整个提交列表中仅选择一个提交时,Cherry Picking 是一个很好的工具。
Git 中的 git cherry-pick
命令
git cherry-pick
是一个有影响力的命令,它允许将随机 Git 提交从仓库中的一个分支移动并添加到仓库当前工作的 HEAD
。此命令还有助于撤消与团队过去开发相关的更改。
例如,如果我们不小心对错误的分支进行了提交,我们将转移到正确的分支,并在仓库的新分支中将提交挑选到正确的位置。
当使用 git merge
或 git 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 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