284

我真的无法想到我会使用git merge不是不想让提交出现的时间git rebase。有什么方法可以将 git 配置为默认关闭快速转发?有一个选项的事实似乎意味着有一种方法,但我似乎无法在文档中找到它。--ff

4

3 回答 3

363

线程中似乎还有一个悬而未决的问题:如何在全球范围内进行(即所有分支)?对于记录,我们可以使用以下内容:

git config --add merge.ff false

...使其适用于当前存储库中的所有分支。要使其适用于没有选项(本地设置覆盖全局)的人没有运行它的所有存储库中的所有分支,请运行以下命令:--global

git config --global --add merge.ff false

文档中:

merge.ff
默认情况下,git 在合并作为当前提交的后代的提交时不会创建额外的合并提交。相反,当前分支的尖端是快进的。当设置为 false 时,此变量告诉 git 在这种情况下创建额外的合并提交(相当于--no-ff从命令行提供选项)。当设置为 only 时,只允许这样的快进合并(相当于--ff-only从命令行给出选项)。

于 2011-07-25T00:21:45.817 回答
298

是的,有--no-ff。您可以为每个分支配置合并选项,例如

git config branch.master.mergeoptions  "--no-ff"

将以下内容添加到您的$(REPO)/.git/config文件中:

[branch "master"]
    mergeoptions = --no-ff

脚注:谈到我的经验,我最终发现将快进切换到关闭对 git 新手最有帮助 - 但是一旦对工作流程和概念的感觉开始深入人心,你肯定希望避免用大量无意义的“合并”来模糊你的日志图远程 ..blarf' 类型的提交。

十年后的脚注 2:下面的其他答案提供了更现代的配置选项,但实际上,您可能确实希望在当今时代保持默认值(即尽可能快进),因为空的合并提交实际上只有使历史更加难以推理。

于 2010-03-23T13:58:18.070 回答
23

阅读答案我最终使用了以下两个选项

git config --global pull.ff only # Disallows non ff merges on pull. Overrides merge.ff when pulling
git config --global merge.ff false # even create extra merge commit when fast forward merge would be possible

只是松散相关我还发现此设置可以避免拉动过程中的麻烦

git config --global pull.rebase true # set up pull to rebase instead of merge
于 2018-01-23T18:19:09.700 回答