How do I make git merge's default be --no-ff --no-commit?
Company policy is to use --no-ff
for merge commits. I personally like to adjust merge log messages so I use --no-commit
. 开发者_如何转开发Plus I like to actually compile and test before I let the commit go.
How do I make --no-ff
and --no-commit
the default for me for all branches?
(and I've learned in the years since asking this, I almost always am happy with the commit, so it is simpler to allow it to commit by default and so long as I amend or otherwise fix things up before doing a push things are all good...)
Put this in $HOME/.gitconfig:
[merge]
ff = no
commit = no
You can use git-config to do this:
git config --global merge.commit no
git config --global merge.ff no
To make --no-ff --no-commit
the default merge behavior, set the options to no
using:
git config --global merge.ff no
git config --global merge.commit no
However, the problem with this is that git pull
= git fetch
+ git merge
. So whenever you pull from the remote server, you'd be creating an ugly merge commit when a simple fast-forward would be warranted. To solve this, set pull.ff
to yes
:
git config --global pull.ff yes
As of version 1.7.6 of git, you should use
git config [--global] merge.ff no
to "force" using --no-ff
in every merge.
Default behaviour is
git config [--global] merge.ff yes
And with
git config [--global] merge.ff only
it will refuse non-fast-forward merges
According to manual, you should use
$ git config [--global] merge.ff false
to set no-fast-forward option by default for all branches with git-config utility.
精彩评论