Git Worklists is a Visual Studio Code extension that provides a lightweight, Git-focused workflow for organizing changes, staging files, committing, and managing stashes - all through a custom UI.
It is designed for developers who want explicit control over staging, commits, and stash workflows, without relying on VS Code’s built-in Source Control view.
A structured way to organize and stage changes.
-
Displays Changes and Unversioned files clearly
-
Shows file count badges per worklist
-
Unversioned files are detected via
git ls-files --others --exclude-standard -
Untracked directories are no longer shown as placeholder entries
-
Files are displayed in Source Control style:
- File name as primary label
- Folder path shown as description
-
Create, move, and delete custom changelists
-
Move files between changelists (per file or per group)
-
Move selected files to another changelist
-
File-level and group-level checkboxes for staging / unstaging
-
Visual file decorations (badges)
-
Click files to open instantly
-
Automatic reconciliation with Git status
-
Files move automatically between:
- Unversioned when newly created
- Changes when tracked / modified
-
Safe behavior when staging / unstaging newly created files
All staging state reflects the actual Git index.
A focused commit experience separate from VS Code SCM.
- Custom Commit Message field
- Amend support with safe handling
- Commit and Commit & Push
- Live staged file counter
- Clear and actionable error feedback
- Safe confirmation before force-with-lease push
- Automatic upstream setup for new local branches
Commit behavior is predictable and aligned with Git CLI behavior.
Integrated Git stash support directly inside Git Worklists.
- Stash all tracked changes from a selected changelist
- Automatically tags stashes with their originating changelist
- Optional custom stash message
- Safe handling of untracked files (skipped unless explicitly supported)
- Immediate UI refresh after stash
- Dedicated Stashes view
- Clean, readable labels (no raw
stash@{0}noise) - Displays originating changelist (e.g.
[CL:changes]) - Shows branch context
- Hover tooltip includes full Git reference
Per-stash context actions:
- Apply Stash – restore changes without removing stash
- Pop Stash – restore changes and remove stash
- Delete Stash – drop stash with confirmation
- Refresh support
Uses Git CLI directly (no VS Code SCM provider).
Supported operations:
git addgit restore --stagedgit commitgit commit --amendgit pushgit stash pushgit stash listgit stash applygit stash popgit stash dropgit ls-files --others --exclude-standard
All operations are executed per repository using repo-relative paths.
- Git installed and available in PATH
- Workspace opened inside a Git repository
- VS Code v1.108.0 or newer
- Open a Git repository in VS Code
- Open Git Worklists from the Activity Bar
- Stage or unstage files using checkboxes
- Organize files into custom changelists
- Enter a commit message
- (Optional) enable Amend
- Click Commit or Commit & Push
- Right-click a changelist -> Stash changes…
- Enter an optional stash message
- Open the Stashes view
- Apply, Pop, or Delete stashes as needed
This extension does not contribute custom VS Code settings yet.
- No partial staging (no hunk / line staging)
- No multi-repository support
- Merge conflicts must be resolved manually
- Untracked files are not included in per-changelist stash by default
- GitHub / GitLab PR features are not included
Planned improvements:
- Include-untracked option for stash
- Multi-repository support
- Partial staging (hunk-based)
- Improved visual polish
- Extended test coverage
- Performance optimizations
- Worklist file-count badge in Changelists view
- Extended unit test coverage
- Improved internal testability through refactoring
- Unversioned files now detected via
git ls-files --others --exclude-standard - Untracked directories are no longer displayed as placeholder entries
- Files now display in Source Control style (filename + folder description)
- Improved reconciliation behavior for untracked vs tracked changes
- Discard action for files directly from the Changelists view
- Correct staged file detection (UI now accurately reflects Git index state)
- Automatic upstream setup when pushing new local branches
- Improved amend behavior when commit would otherwise be empty
- Changelists view
- Custom commit panel
- Git staging, commit, amend, push support
- Per-changelist stash creation
- Dedicated Stashes view
- Apply / Pop / Delete stash actions
- Move files between changelists
- Move group to changelist
- Move selected files to changelist
- Improved reconciliation with Git status
- Clean stash label formatting
- Context menu + icon actions
- Error handling improvements
Git Worklists intentionally avoids VS Code’s built-in SCM provider.
Instead, it builds a focused, predictable workflow using:
- Tree Views
- Commit UI
- Git CLI
The goal is clarity, explicit control, and zero hidden magic.
Git Worklists - focused Git workflows without surprises. 🚀
