Block Merge Conflicts in Commits
Manually editing merge conflicts can lead to a lot of pain. What if you missed a conflict? Now you have >>>>>>>>>>>
and <<<<<<<<<<<<<<
all around your code base.
Good news, it’s really easy to deny those changes by utilizing git-hooks
.
On every commit Git runs a command (or hook). In the case of committing, Git runs the pre-commit
hook.
By scanning for the merge conflict markers in our pre-commit
hook we can deny a commit and keep those less-than-useful markers out of the repository. Of course, if you really need to commit something, you can do that as well but it takes a little extra work. Think of this hook as a safety net, it won’t gaurantee safety but it does help a lot.
Setting up the pre-commit hook
- Copy the pre-commit hook file into
your-working-copy/.git/hooks/pre-commit
- Make the script executable (
chmod u+x pre-commit
) {% gist jonDowdle/22ed6493fdcbfa3c985a %}
Overriding the hook
By default git commit
will run the pre-commit
hook and deny changes if it doesn’t return successfully. If you need to circumvent this, you only need to pass in a flag git commit --no-verify
.
I can’t speak for all of the Git front ends, but if you use SourceTree, you can override the hook by selecting the following option: