Source Control

Branches & Collaboration

Create, switch, and merge branches — and resolve the conflicts that come with working alongside other people — without leaving the editor.

Branching

Click the branch name in the Status Bar (bottom-left) to open the branch picker: switch to an existing branch, create a new one from your current HEAD, or check out a remote branch you don't have locally yet.

Syncing with a remote

Pull & Push

The sync icon in the Status Bar shows how many commits you're ahead or behind the remote, and pulls then pushes in one click.

Publish Branch

A local branch with no upstream yet shows a Publish Branch action that creates the matching remote branch and starts tracking it.

Fetch

Fetch From All Remotes updates your local view of remote branches without merging anything into your working branch.

History graph

The Graph panel shows incoming and outgoing commits relative to your remote, so you always know what a pull or push is about to do before you do it.

Resolving merge conflicts

When a merge, rebase, or pull produces a conflict, the affected files appear in a Merge Changes group in Source Control. Opening one shows a 3-way merge editor:

1

See both sides

The incoming and current versions are shown side by side, with the conflicting region highlighted in both.

2

Pick a resolution

Accept the current change, the incoming change, both, or edit the result manually in the combined view at the bottom — all with inline buttons, no manual <<<<<<< marker editing required.

3

Mark as resolved

Once every conflict in a file is handled, stage it like a normal change and continue the merge or rebase.

Check the whole file before committing a merge

The 3-way editor resolves conflict markers accurately, but it's still worth reading the merged result in context afterward — an automatic resolution can be syntactically valid while still being logically wrong if both sides changed nearby, related code.

Working with GitHub

Signing in with a GitHub account (from the Accounts icon in the Activity Bar) unlocks push/pull authentication without a personal access token, and lets extensions that integrate with GitHub — pull request review tooling, issue linking — authenticate the same way.