如何禁用快进合并?在 Git 中它的优缺点是什么?


可以禁用快进合并 -

  • 在合并时
  • 对于整个仓库
  • 对于所有仓库。

禁用快进合并既有优点也有缺点。

当我们禁用快进合并时,git 将执行合并提交以合并来自两个分支的更改。合并提交的缺点是它变得难以阅读和理解提交历史,尤其是在我们有很多分支的情况下。如果您的团队更喜欢保持分支的线性历史,那么应该选择快进合并。禁用快进合并将创建合并提交,这会污染提交历史。

禁用快进合并(启用合并提交)的好处是它显示了提交历史的真实反映。合并提交将显示分支何时合并以及如何合并。另一个优点是合并提交有助于轻松撤消功能。如果要维护线性历史,则撤消功能会很复杂。

使用以下命令,我们可以在合并时禁用快进合并。

$git merge --no-ff branch_name

我们可以为特定仓库或所有仓库禁用快进合并。

git config ff no

对于所有仓库,请使用 --global 标志

git config --global ff no

示例

让我们举一个例子,看看如何使用 --no-ff 选项禁用快进合并。在这个例子中,我们创建一个文本文件 - file1.txt,添加一些内容,暂存,最后提交文件。让我们将其称为提交 c1,如下面的图所示。我们正在创建一个指向相同提交 c1 的新分支 feature

现在,我们将通过将新值追加到 file.txt 并提交更改来向前移动 feature 分支。让我们将提交称为 c2,如图所示。

现在我们需要使用以下命令将 feature 分支的更改合并到 master 分支

$git merge --no-ff feature

这将创建一个新的合并提交,并且 Master 分支现在将指向合并提交,如图所示。

示例

$ git init
$ echo abc>file1.txt
$ git add .
$ git commit -m 'fiel1.txt'
$ git branch feature
$ git switch feature
$ echo pqr>>file1.txt
$ git add .
$ git commit -m 'pqr'
$ git switch master
$ git merge --no-ff feature
$ git log --all --oneline --graph

输出

Merge made by the 'recursive' strategy.
file1.txt | 1 +
1 file changed, 1 insertion(+)

* 62e51ff (HEAD -> master) Merge branch 'feature'
|\
| * c94629d (feature) pqr
|/
* 35d3b1b fiel1.txt

更新于: 2021-04-30

2K+ 阅读量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告