`--no-ff` 标志对`git merge` 有什么影响?

问题描述

如果该标志检测到您的当前是您尝试合并的提交的祖先,则该--no-ff标志会阻止git merge执行“快进” 。HEAD快进是当 git 不构造合并提交时,只是将您的分支指针移动到指向传入的提交。这通常发生在git pull没有任何本地更改的情况下。

但是,有时您想阻止这种行为发生,通常是因为您想维护特定的分支拓扑(例如,您正在合并一个主题分支,并且您希望确保它在阅读历史记录时看起来像这样)。为了做到这一点,您可以传递--no- ff标志并且git merge始终 构建合并而不是快进。

同样,如果您想执行 a git pullor usegit merge以显式地快进,并且如果它不能快进,您想退出,那么您可以使用该--ff- only标志。这样你就可以经常做一些git pull --ff-only不假思索的事情,然后如果出错,你可以回去决定是要合并还是变基。

解决方法

使用gitk log,我无法发现 和 的效果之间的git merge区别git merge --no-ff。我如何观察差异(使用 git
命令或某些工具)?