&gt; If you look at a commit, there&#x27;s no &quot;anymore&quot;, no other timeframe rather that the commit&#x27;s; it&#x27;s either correct or incorrect on it&#x27;s own.<p>this is true but frankly nothing i ever cared about. I think of commits as something that i can change and break and fix through rebasing, amending and the like. This mindset makes you a lot more flexible when handling commits, and when keeping in mind that the commit hashes change while doing that, I don&#x27;t see any downsides.<p>&gt; It makes much more sense to merge each interface change from master to feature branch individually, resulting in atomic merge commits, each of which handles specific aspect, while staying correct.<p>Then we have different views on what a horrible merge is. For me, that is having dozens of merge conflicts plus multiple necessary changes not indicated by conflicts, and most of those problems need to be resolved before the project compiles and the rest has to be resolved before all tests go green. There is no &quot;while staying correct&quot; in there. And this, working on lots of breakages at once, while needing to fix all of them before tests are green again, this i don&#x27;t like at all and will be partly mitigated by the rebasing strategy.<p>There certainly are advantages of merge commits, but in my (admittedly limited, especially when talking about larger projects) experience, resolving merge issues does get harder with them.