I am the dev making shitty commits. I&#x27;ve also worked with devs much smarter than me, and they also make some shitty commits. I have no problem explaining this reasoning to them. I wouldn&#x27;t use the same language I use as an anonymous internet poster. But everyone makes mistakes. Even the best of the star players break the build every now and then. Even the CTO sometimes takes down the whole system by accident. (Always using) feature branches and auto-deploying master are a solution I like. This also allows for easy code reviews. It also encourages a culture of things like good, detailed commit messages (it&#x27;s easy to push an un-reviewed commit of &quot;fixes&quot; to master). It&#x27;s also easy to run auto CI tests on these branches. It also allows for gatekeeping if you have a contractor or someone on your team who shouldn&#x27;t have full commit access.