在 Git 中合并分支而不使用快进
本教程将介绍如何在 Git 中合并分支而不使用快进。
我们使用 Git 在协作开发环境中工作。我们为不同的目的创建了许多分支,最终,我们将这些分支合并到主分支中以提供发布版本。
我们在 Git 中使用快进或不使用快进合并分支。
我们现在将用一个例子来说明这一点。
在 Git 中使用带有和不带有 --no-ff
(无快进)选项的 git merge
命令
在协作开发环境中,我们经常会在 Git 中创建多个分支,以服务于不同的目的。然后我们最终将这些分支合并到主分支中以提供发布版本。
有时,我们的主线分支的 HEAD
提交是我们尝试合并的分支的提交的祖先。在这种情况下,合并是通过快进完成的。
当从当前分支尖端到目标分支的线性路径时,可能会发生快进合并。假设我们有分支 feature1
,我们将它合并到我们的主线分支 main
。
现在,假设 main
分支的 HEAD
提交是分支 feature1
的提交的祖先,我们想要合并的那个。
在这种情况下,Git 无需合并分支,而是整合历史记录所需要做的就是移动(即)将当前分支尖端快进到目标分支尖端。
因此,在我们的例子中,通过快进,main
分支的当前 HEAD
将向上移动到 feature1
分支尖端。
请看下图合并前分支 main
和 feature1
的情况。
E---F---G feature1
/
A---B---C---D main
因此,当我们使用 git merge
命令合并两个分支时,将发生快进。
要进行合并,我们执行命令如下。
$ git merge feature1
执行命令后,main
分支将被快进。
请看下面快进的图示。
E---F---G feature1, main
/
A---B---C---D
因此,现在 main
分支的当前 HEAD
现在快进了。在这种情况下,不会创建合并提交。
有时,我们可能想要进行实际的合并而不是快进。假设我们要维护分支拓扑。
在这种情况下,我们可以使用带有选项 --no-ff
的 git merge
命令。
命令选项 --no-ff
会导致在所有情况下创建合并提交,即使合并可以被解决为快进。
因此,在我们的例子中,要在没有快进的情况下进行合并,我们需要执行以下操作。
$ git merge --no-ff feature1
因此,现在 git merge
命令将分支 feaure1
合并到 main
分支并生成一个合并提交(即使它是一个快进合并)。
这对于记录仓库中发生的所有合并很有用。
因此,我们详细说明了如何在 Git 中合并分支而不使用快进。
相关文章
如何在 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 命令,但这很麻烦,尤其是当我们有大量不冲突的文件时。