Jump to the navigation menu

Feature branches cause merge conflicts

A common approach I see on software projects is where Developers create separate Git branches for each task they work on.

This commonly matches issues or ticket on a sprint board or issue tracker.

Each ticket is worked on independently and merged into a long-lived mainline branch once complete.

This type of approach is commonly called Git Flow or GitHub Flow.

It's something I've given presentations on in the past.

A common downfall is that different branches can conflict with each other - either due to a merge conflict where the same lines are changed in different branches, or incompatible code is written that works separately but not when merged together.

I used to work this way, even when working on projects as the only Developer.

One time, I was demoing two features to a client and needed to switch branches and doing so broke what it was trying to show.

These days, I avoid conflicts between branches by not branching.

Everyone works on a single branch and pulls and pushes changes regularly.

If you're doing continuous integration, that should be once a day as an absolute minimum.

I do test-driven development and usually commit after each passing test.

If you work on a single branch and pull and push changes regularly, you're much less likely to get merge conflicts and Developers can focus on pushing code instead of fixing merge conflicts.

- Oliver

Was this interesting?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an certified Drupal Triple Expert with 18 years of experience, a Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.