DEV Community

Cover image for How To Enable Real-Time Merge Conflict Detection in VS Code
Andrew for GitLive

Posted on

How To Enable Real-Time Merge Conflict Detection in VS Code

Ah, the dreaded resolve conflicts message. You've finished crafting the perfect code, just a quick merge in of master (ahem, main) before you submit your PR, and then... ๐Ÿ’ฅ

image-1-updated.png

If only there was an early warning system for merge conflicts so you could be better prepared or even avoid the conflicts in the first place I hear you say? Well if you are a VS Code user today is your lucky day!

Firstly, you'll need to install and set up GitLive, then you should see this icon in the top right-hand corner.

colour toggle full.png

It will be disabled if the file open in the editor is not from git or there are no other changes to it from contributors working on other branches (aka you are safe from conflicts). If it's enabled there will be one or more change indicators in the gutter of the editor.

image-3-2200x1200.png

These will show you where your teammates have made changes compared to your version of the file and even update in real-time as you and your teammates are editing.

GL-gutter-4000.png

If you've made a conflicting change you will see the bright red conflict indicator. These conflicts can be uncommitted local changes you have not pushed yet or existing changes on your branch that conflict with your teammatesโ€™ changes.

Hover your mouse over the code in the affected lines to see the diff between your version and theirs, the branch the offending changes are from, and the issue connected to that branch if there is one.

conflict popup 2 full.png

From this popup you can also cherry-pick your teammateโ€™s change directly from their local version of the file. For simple conflicts this can be a quick way to resolve them as identical changes on different branches will merge cleanly.

Unfortunately, it's not always possible to resolve a conflict straight away but with the early warning, you'll be better prepared, avoiding any nasty surprises at merge time!

Check out this blog post or the GitLive docs if you want to learn more.

Top comments (8)

Collapse
 
jingxue profile image
Jing Xue • Edited

I don't know... this all sounds a bit overly eager and can become counter-productive. Some of the conflicts might not even end up in either my or my teammate's final commits/merge, or after I resolve the conflicts based on some early warnings, somebody else might push some further changes that conflict with my resolution again or render it moot.

I organize my changes into small, logical, and self-contained commits, and I constantly rebase my feature branch, on top of the base branch, so merges I have to do are typically very easy to resolve. So merge conflicts are almost never nasty for me.

Collapse
 
andrewgl profile image
Andrew

Sounds like you have a very organized workflow! You might still find this feature useful though as the indicators can provide value beyond merge conflict detection, for example in an open source project they are a great way to discover what others are working on and if there are any possible synergies with the changes you are making. And for the times they prove to be more of a distraction you can always hide them.

Collapse
 
maxiqboy profile image
Thinh Nguyen

You are right, I dont think this extension is useful,

It makes we distracted a lot, when we have to care about the conflicts not just one time but all the time,

Collapse
 
mattjwarren profile image
Matthew Warren

I think you need to think bigger. On a project with hundreds of devs and many teams working against the same codebase for multiple releases up to a couple years ahead of time, this kind of 'situational awareness' can be invaluable.

Collapse
 
darthwalsh profile image
Carl Walsh

I'm trying to understand, does this find conflicts with origin/main, all remote branches, your teammate's local commits, or your teammate's working tree? The latter two sound most useful but then it can't run completely local?

Collapse
 
andrewgl profile image
Andrew

It finds conflicts with everything you mentioned, for the latter two it also requires them to have the extension installed

Collapse
 
steakeye profile image
Andrew Keats

So useful to know as early as possible that you might have merge issues with your current task; being able to see what your colleague has changed means you have the chance of mitigating any merge pain!

Collapse
 
michelleann815 profile image
Michelle Ann Terrazas

Thank you for the post, I'll keep these tips in mind when merging PRs :)