How to configure "git pull --ff-only" and "git merge --no-ff"

Robert Huffman picture Robert Huffman · Feb 9, 2016 · Viewed 13.6k times · Source

A typical git workflow for me is to clone a remote repository and use git pull to keep it up-to-date. I don't want merge commits when I pull, so i use the --ff-only option.

I also make local branches for feature work. I want to preserve the branch history, so when I merge the local branch back to my local clone, I use the --no-ff option.

How can I configure git to use those options by default? Currently my .gitconfig looks like this:

[merge]
  ff = false
[pull]
  ff = only

However, git pull (which is really git fetch and git merge) seems to be picking up the merge option and therefore creating merge.

Answer

alextercete picture alextercete · Feb 9, 2016

That shouldn't be the case, according to the git-config man page on pull.ff:

(...) When set to only, only such fast-forward merges are allowed (equivalent to giving the --ff-only option from the command line). This setting overrides merge.ff when pulling.

The configuration pull.ff has been introduced in Git 2.x, so it won't work as expected on Git 1.x -- it will probably pick up the merge.ff configuration and use that when doing a Pull.