如何禁用快进合并?在 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
广告