I don’t trust git’s built-in merge. It stinks. I’ve seen too much new work overwritten by old and I’ve seen too many merge “conflicts” where both parts were absolutely identical even unto whitespace. I use BeyondCompare.
My only rule for branches is to create as few of them as I can absolutely manage. No development branch, no release branch, never make a new one from any but master.