git-cl for VS Code

February 19, 2026 · View on GitHub

Manage git-cl changelists directly in VS Code. Organize your working changes into logical groups for focused commits — no Python dependency required.

Features

  • Changelists in Source Control — Each changelist appears as a group in the Source Control sidebar with file status decorations (modified, added, deleted, untracked).
  • Add files from anywhere — Right-click files in the built-in Git Changes section or the Unassigned group to assign them to a changelist.
  • Stage, commit, diff, revert per changelist — Inline buttons on each changelist header let you stage, commit, diff, or revert all files in the group with one click.
  • Stash & unstash changelists — Temporarily shelve a changelist (or all of them) and restore later. Stash metadata tracks source branch and timestamps.
  • Branch from changelist — Create a new branch containing only the files in a specific changelist.
  • Auto-refresh — The tree updates automatically when cl.json changes on disk (e.g. from the CLI tool) or when git status changes.
  • Fully interoperable — Reads and writes the same .git/cl.json and .git/cl-stashes.json files as the Python CLI, so you can use both tools side by side.

Installation

From VSIX (local build)

npm install
npm run package
code --install-extension git-cl-vscode-0.0.1.vsix

Development

npm install
# Press F5 in VS Code to launch the Extension Development Host

Usage

Open a workspace that contains a .git directory. The extension activates automatically and adds a Changelists section to the Source Control sidebar.

Adding files to a changelist

  • Right-click a file in the built-in Changes list and select Add to Changelist.
  • Or right-click a file in the Unassigned group under Changelists.
  • Or run git-cl: Add to Changelist from the Command Palette.

You'll be prompted to pick an existing changelist or create a new one. Files can only belong to one changelist at a time — adding a file to a new changelist silently moves it.

Changelist operations

Each changelist group header has inline action buttons:

ButtonAction
+Stage all tracked files in the changelist
-Unstage all staged files in the changelist
checkmarkCommit the changelist (prompts for message)
trashDelete the changelist (files return to Unassigned)

Additional operations are available via right-click on the changelist header or the Command Palette:

  • Diff Changelist — Open diff tabs for every file in the changelist.
  • Checkout (Revert) Changelist — Discard all changes, reverting files to HEAD.
  • Stash Changelist — Stash the changelist's changes and save metadata.
  • Branch from Changelist — Create a new branch with only this changelist's files.

Stashed changelists

Stashed changelists appear in a read-only Stashed section with their source branch and timestamp. Right-click to Unstash and restore the changelist.

Commands

All commands are available via the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) under the git-cl category:

CommandDescription
git-cl: Add to ChangelistAdd files to a changelist
git-cl: Remove from ChangelistRemove files from their changelist
git-cl: Delete ChangelistDelete a changelist
git-cl: Delete All ChangelistsDelete all changelists
git-cl: Stage ChangelistStage tracked files in a changelist
git-cl: Unstage ChangelistUnstage files in a changelist
git-cl: Commit ChangelistCommit a changelist with a message
git-cl: Diff ChangelistOpen diffs for all files in a changelist
git-cl: Checkout (Revert) ChangelistRevert files to HEAD
git-cl: Show Changelist StatusShow formatted status in the output panel
git-cl: Stash ChangelistStash a single changelist
git-cl: Stash All ChangelistsStash all active changelists
git-cl: Unstash ChangelistRestore a stashed changelist
git-cl: Unstash Changelist (Force)Unstash without branch/conflict checks
git-cl: Unstash All ChangelistsRestore all stashed changelists
git-cl: Branch from ChangelistCreate a new branch from a changelist

Requirements

  • VS Code 1.85+
  • Git installed and available on PATH

License

MIT