我真的想不出有什么时候我会使用git merge而不是git rebase,并且不想有一个提交显示。有没有办法配置git默认关闭快速转发?有一个——ff选项的事实似乎暗示有一种方法,但我似乎在文档中找不到它。
当前回答
似乎还有一个悬而未决的问题:如何在全局范围内(即为所有分支)做这件事?为了记录,我们可以使用以下资料:
git config --add merge.ff false
...使其应用于当前存储库中的所有分支。要使它应用于所有存储库中的所有分支,如果没有——global选项(本地设置覆盖全局),则运行以下命令:
git config --global --add merge.ff false
从文档中可以看到:
merge.ff 默认情况下,git在合并当前提交的后代提交时不会创建额外的合并提交。相反,当前分支的顶端是快进的。当设置为false时,这个变量告诉git在这种情况下创建一个额外的合并提交(相当于在命令行中给出——no-ff选项)。当设置为only时,只允许这样的快进合并(相当于从命令行给出——ff-only选项)。
其他回答
是的,有——no-ff。您可以为每个分支配置合并选项,例如。
git config branch.master.mergeoptions "--no-ff"
添加以下到您的$(REPO)/。git /配置文件:
[branch "master"]
mergeoptions = --no-ff
脚注:说到我的经验,我最终发现切换快进到关闭对git新手来说是最有帮助的——然而,一旦对工作流和概念的感觉开始深入,你肯定要避免用大量毫无意义的“合并远程”来模糊你的日志图。blaf '类型提交。
脚注2,十年后:下面的其他答案提供了更现代的配置选项,但实际上,在这个时代,您可能确实希望保持默认值(即尽可能快进),因为空的合并提交真的只会让历史更加难以推理。
似乎还有一个悬而未决的问题:如何在全局范围内(即为所有分支)做这件事?为了记录,我们可以使用以下资料:
git config --add merge.ff false
...使其应用于当前存储库中的所有分支。要使它应用于所有存储库中的所有分支,如果没有——global选项(本地设置覆盖全局),则运行以下命令:
git config --global --add merge.ff false
从文档中可以看到:
merge.ff 默认情况下,git在合并当前提交的后代提交时不会创建额外的合并提交。相反,当前分支的顶端是快进的。当设置为false时,这个变量告诉git在这种情况下创建一个额外的合并提交(相当于在命令行中给出——no-ff选项)。当设置为only时,只允许这样的快进合并(相当于从命令行给出——ff-only选项)。
这些答案并不适用于我,直到我应用配置不仅在全局:
git config --global pull.ff only
git config pull.ff only
在本地我拉。Ff配置为false(而不是only)
阅读这些答案,我最终使用了以下两个选项
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
推荐文章
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录
- 如何在GitHub上创建自己的存储库?