Reputation: 572
In order to make it easy to see when feature branches are merged to master, one can use Git's --no-ff
option when merging their feature branch into master.
One way to accomplish this without needing to type --no-ff
is to disable fast-forward merges into master entirely:
git config branch.master.mergeoptions --no-ff
However, this is clumsy since it also prevents fast-forward merges when simply merging upstream changes in master to a local copy of master (merge commits are created for normal git pull
s.)
Is there some way to configure Git to prevent fast-forward merges into master only when merging feature branches into master, so that fast-forwards are allowed when doing git pull
s from master, but merge commits are always created when merging feature branches? Or is explicitly using --no-ff
the only way to accomplish this?
Upvotes: 4
Views: 2889
Reputation: 1329672
Note: a pre-merge hook doesn't exist.
It was introduced in 2008, and criticized then (because the control
had better be implemented on the server (using an update hook).
It is in the process of being re-introduced (September 2012)
And a pre/post-commit hook isn't run on the auto-commit done by a git merge
.
So:
git-merge
wrapper which will do that control at the local repo level.That being said, as I mentioned in "fast forward when using pull and no-ff when pull", not using --no-ff
has its advantages, as it won't break git bisect
and git blame
.
So a developer for a feature might want to reorganize his/her feature commits (squash them a little if there are too many of them) before fast-forward them in master branch (instead of creating one giant commit).
See "Understanding the Git Workflow" for more.
Upvotes: 2