(For simplicity) I have a master
branch and a dev
in my Git-repo.
I want to ensure the master
branch is always working, so all work I do should be in the dev
branch.
However, when I merge my changes in with a --no-ff
merge, I tend to stay in the master
branch, and just continue working in it (because I forget to checkout my dev
branch).
Can I put up a rule for the master
branch, which states I can't do commits, and fast-forward merges, but only --no-ff
merges from another branch?
This must work for private hosted repositories (ergo not GitHub and BitBucket).
It may make sense to install it globally via
and moving that
pre-commit
file into that directoryYes, it is possible. You must create pre-commit hook which rejects commits to master branch. Git doesn't call pre-commit hook when you call merge command, so this hook will be rejecting only regular commits.
Create file .git/hooks/pre-commit with following content:
Make it executable (not required on Windows):
To disable fast-forward merges you must also add following option to your .git/config file:
If you want also protect master branch on your remote, check this answer: How to restrict access to master branch on git