我可以在git中默认关闭快进吗?

dwbf0jvd  于 2022-12-02  发布在  Git
关注(0)|答案(4)|浏览(112)

我真的想不出什么时候我会使用git merge而不是git rebase,并且 * 不 * 希望有一个提交出现。有没有什么方法可以将git配置为默认关闭快进?事实上,有一个--ff选项似乎暗示着有一种方法,但我似乎在文档中找不到。

cigdeys3

cigdeys31#

看来帖子里还有一个悬而未决的问题:如何在全局范围内(即针对所有分支机构)执行此操作?对于记录,我们可以使用以下方法:

git config --add merge.ff false

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

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

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

li9yvcax

li9yvcax2#

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

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

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

[branch "master"]
    mergeoptions = --no-ff
  • 脚注:说到我的经验,我最终发现将快进切换为关闭对git新手来说最有帮助--然而,一旦对工作流和概念的感觉开始深入,你肯定希望避免用大量无意义的'merged remote.. blarf'类型提交来模糊日志图。*
  • 脚注2,十年后:下面的其他答案提供了更现代的配置选项,但实际上,在这个时代,您可能确实希望使用默认值(即,尽可能快进),因为空的合并提交只会使历史更难以推理。*
yiytaume

yiytaume3#

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

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
fcg9iug3

fcg9iug34#

这些答案对我不起作用,直到我不仅在全局:

git config --global pull.ff only
git config pull.ff only

在本地,我pull.ff配置是false(而不是only

相关问题