GitTools
Git with a visual interface inside VS Code.
Drag and click to merge, rebase and cherry-pick whole branches, single commits, files — or even individual lines.

GitTools turns the git commands that are hard to remember — especially cherry-pick — into things you can
simply drag and drop. It runs on the git that is already installed on your machine, needs no account and
sends nothing anywhere.
Highlights
- 🍒 Cherry-pick anything: a whole branch, chosen commits, specific files, or just the lines you select.
- 🖱️ Drag & drop: drop a branch, commits or files onto another branch and pick what to do.
- 🔀 Side-by-side conflict editor: current × result × incoming, block by block.
- 🌳 History graph with colored branch lanes, search, tags and resizable columns.
- 🧭 Better diffs: line selection, whole-file view, side-by-side mode,
F7/F8 to jump between changes and files.
- 📁 File list or folder tree everywhere, with
+added −removed line counts.
- 🧩 Arrange the workspace your way: drag tabs and panels to any side, like in VS Code.
- 📜 Live git log: see every command GitTools runs, in real time.
- 🌍 6 languages (English, Português, Español, 中文, हिन्दी, العربية) and a theme that follows VS Code.
Cherry-pick a whole branch
Drag a branch from the sidebar onto another one and choose Merge, Rebase or Cherry-pick every commit.
Commits that were already applied are skipped automatically.

Cherry-pick only some lines
Open a commit, click or drag over the lines you want and hit Apply lines to…. GitTools builds a partial patch
with just those lines and applies it with git apply --3way — keep it staged for review, or commit it right away.

Cherry-pick Studio
One place to pick commits, files or lines between any two branches: Whole branch, Commits, Files and Lines tabs.

Resolve conflicts side by side
When a cherry-pick, merge or rebase conflicts, open the conflict editor: choose current, incoming or both per block
(or for the whole file), edit the result, and continue — all without leaving the panel.

Folder tree and diff navigation
Switch every file list between List (file name + folder) and Tree. In any diff, F7 / Shift+F7 jump to the
next / previous change and F8 / Shift+F8 to the next / previous file.

Arrange the workspace
History, Changes, Files, Compare and the Git log are tabs you can drag to the left, right or bottom — or between
panels — and the ⊞ button puts everything back.

Compare, blame and file history
Compare any two branches, tags or commits and bring over lines or whole files; see who changed every line with
Blame; follow a file through renames in its history.
| Compare |
Blame |
 |
 |
Getting started
- Open a folder that is a git repository (or use GitTools: Open a repository…).
- Run GitTools: Open GitTools —
Ctrl+Alt+G (⌘⌥G on macOS) — or click ⑂ GitTools in the status bar.
| Command |
What it does |
| GitTools: Open GitTools |
Opens (or reveals) the GitTools panel. |
| GitTools: Open a repository… |
Picks another repository folder. |
| Open this folder in GitTools |
Explorer context menu on a folder. |
| Show this file's changes in GitTools |
Opens the diff of the current file in a panel beside it (editor title button). |
Files that GitTools opens (Open in editor, file menus) open in VS Code's own editor, beside the panel.
Keyboard shortcuts (inside the panel)
| Action |
Shortcut |
| History / Changes / Files / Compare |
Ctrl+1 … Ctrl+4 |
| Search the history |
Ctrl+F |
| Cherry-pick Studio |
Ctrl+Shift+P |
| Next / previous change in a diff |
F7 / Shift+F7 |
| Next / previous file in the list |
F8 / Shift+F8 |
| Fetch / Pull / Push |
Ctrl+Shift+F / Ctrl+Shift+L / Ctrl+Shift+K |
| All shortcuts |
F1 |
Every shortcut can be changed in ⚙ Settings → Keyboard shortcuts.
Settings
Open ⚙ in the panel's top bar: language, theme, diff layout, notification position and size, your git identity
(user.name / user.email, global or per repository) and remotes (add, rename, change URL, remove).
Requirements
- Git 2.23 or newer on your
PATH.
- VS Code 1.90 or newer.
Privacy
Everything runs locally. GitTools only runs git commands on your machine; it has no telemetry, no account and no
network calls of its own (git itself talks to your remotes when you fetch, pull, push or clone).
Links
Released under the MIT License.