Git Cherry-Pick 与合并工作流
本文讨论 git cherry-pick 和 git merge 命令的工作流程。 我们使用这两个命令将更改从一个分支集成到 Git 版本控制系统中的另一个分支。
但是,某些场景倾向于使用一个命令而不是另一个命令。
git cherry-pick 命令
git cherry-pick
命令是一个有用的 Git 实用程序,它允许我们通过引用选择任意 Git 提交并将它们应用到当前 HEAD。 我们使用此命令从一个分支中选择一个提交并将其应用到另一个分支。
我们什么时候应该使用 git cherry-pick
命令?
虽然有用,但 git cherry-pick 命令并不总是最佳实践。 在某些情况下,传统的 git merge 命令更受欢迎。
尽管如此,在某些情况下我们可以找到理想的命令。 让我们讨论一些。
假设您正在处理一个有多个分支的项目。 您在一个分支上进行了更改,后来发现您在错误的分支中签出。
由于这些更改不属于该分支,您可以使用 git cherry-pick
命令将更改移动到正确的分支。
记下提交哈希,使用 git checkout
命令切换到正确的分支,然后运行 cherry-pick,如下所示。
$ git cherry-pick <commit-id>
git cherry-pick
命令也是团队协作的理想选择。 项目在前端和后端组件之间具有共享代码。
一位开发人员可以使用 git cherry-pick 命令从另一位开发人员复制代码。
我们还使用 git cherry-pick
命令来修复错误。 假设您已经开始研究项目中的一项新功能,并且您发现了该过程中的一个现有错误。
您可以创建一个明确修复错误的提交并将其挑选到主分支。 该命令也是恢复丢失的提交的理想选择。
git 合并命令
git merge
命令就不多说了。 它只是将两个分支的提交历史联系起来并创建一个合并提交。
通过合并两者,您可以将开发分支的更改引入主分支。 它是一种将更改从一个分支合并到另一个分支而不是 git rebase 命令的非破坏性方法。
合并非常简单。 您需要做的就是切换到要合并的分支并运行命令。 这是一个例子。
假设我们在开发分支中有一些与主分支相关的提交,我们可以将这些更改合并到主分支中,如下所示:
# Switch to the main branch
$ git checkout main
# Merge the two
$ git merge development
git cherry-pick 和 git merge 的区别
正如我们所见,这两个命令在将更改从一个分支集成到另一个分支时都很有用。 然而,区别在于我们如何使用每个命令。
git cherry-pick
命令非常适合对大型 Git 存储库的较小子集进行采样。 当您想在分支之间移动特定提交时,它会派上用场。
另一方面,git merge 命令非常适合大量提交。 从一个分支到另一个分支挑选二十次提交并不理想。
git merge
命令更适合这种场景。
也就是说,每个命令都有其优点和缺点。 让我们讨论一些。
与 git merge
命令相反,git cherry-pick
命令减少了我们存储库中的混乱,后者总是引入无关的合并提交。
另一方面,使用 git cherry-pick 命令会导致重复提交并使其他开发人员感到困惑,尤其是在您拥有共享 Git 存储库的情况下。
git merge
命令将帮助您更快地集成更改,尤其是在处理许多提交时。 此提交的缺点是可能会遇到合并冲突。
当然,使用 git cherry-pick
命令可能会遇到合并冲突,但是使用 git merge
命令,提交越多,就越有可能遇到冲突。
在 Git 中合并从一个分支到另一个分支的更改时,git merge
和 git cherry-pick
命令很有用。 区别在于何时以及如何使用每个命令。
相关文章
如何在 Windows 系统中卸载 git
发布时间:2023/04/09 浏览次数:223 分类:Git
-
在这篇简短的文章中,我们将学习如何卸载 Git,以及如何在从个人计算机的目录中卸载 Git 后删除这些文件。
Git 如何重命名本地分支
发布时间:2023/04/09 浏览次数:64 分类:Git
-
大多数情况下,重命名分支机构是由于上述情况。 因此,在本教程中,我们将学习使用下面提到的技术更改本地 Git 分支的名称。
重命名 Git 存储库中的文件和目录
发布时间:2023/04/09 浏览次数:102 分类:Git
-
在本文中,我们将讨论 git 中的重命名过程。 我们使用 Git Rename 来更改工作目录中文件和文件夹的名称。
在 Git 中取消初始化存储库
发布时间:2023/04/09 浏览次数:187 分类:Git
-
本本文介绍如何通过 Git 命令行取消初始化 Git 存储库。git init 命令开发一个新的空置 Git 存储库。 它还用于重新初始化已经存在的 Git 存储库。
Git 仓库名称该如何命名
发布时间:2023/04/09 浏览次数:208 分类:Git
-
使用 Git 时,选择一个简洁且最新的存储库名称是一项艰巨的任务。本教程介绍了如何以独特的方式命名 Git 存储库。
配置 Git 以忽略文件模式更改
发布时间:2023/04/09 浏览次数:67 分类:Git
-
本文讨论配置 Git 以忽略文件更改 chmod 所需的步骤。 如果您更改 Git 正在跟踪的文件的权限,系统将在该文件中注册更改。
在 Git 中暂存已删除的文件
发布时间:2023/04/09 浏览次数:93 分类:Git
-
本文讨论了在 Git 中暂存已删除文件的必要步骤。我们知道 rm 命令可以删除一个文件,而无需将其从工作目录中移除。 那么,我们如何暂存已删除的文件以进行提交呢?
在 Git 中显示冲突文件
发布时间:2023/04/09 浏览次数:139 分类:Git
-
本文讨论在 Git 中列出冲突文件的最简单和最干净的方法。 我们可以使用 git status 命令,但这很麻烦,尤其是当我们有大量不冲突的文件时。