Smart Changelists
IntelliJ-style changelists for VS Code
Save snapshots of your changes, switch between versions, and commit selectively.
Features
| Feature |
Description |
| Snapshot System |
Save the current state of any file without reverting it |
| Multiple Versions |
Keep different versions of the same file in different changelists |
| Non-Destructive |
Your working file stays intact - keep editing after saving a snapshot |
| Diff Preview |
Click any snapshot to see a side-by-side diff with HEAD |
| Apply & Stage |
Apply a snapshot and stage it for commit in one click |
| Independent Storage |
Each snapshot stores full content, not diffs - zero corruption risk |
| Badge Counter |
Activity Bar icon shows total snapshot count |
| Smart Naming |
Auto-increment suggestions when creating changelists (v1 → v2) |
| AI Integration |
Add snapshots to VS Code Chat or access via CLI tools |
Installation
VS Code Marketplace
- Open VS Code
- Go to Extensions (
Ctrl+Shift+X)
- Search for "Smart Changelists"
- Click Install
GitHub Releases
- Download the latest
.vsix file from GitHub Releases
- Install via command line:
code --install-extension smart-changelists-1.1.2.vsix
Quick Start
- Make changes to your files as usual
- Open Git Changelists panel from the Activity Bar (left sidebar)
- Right-click a file under "Working Changes"
- Select "Shelve to Changelist..." and choose a changelist
- Continue editing - your file stays as-is!
Commands
| Command |
Description |
Shortcut |
| Create Changelist |
Create a new changelist group |
Ctrl+Shift+N |
| Shelve to Changelist |
Save current file state as snapshot |
Ctrl+Shift+M |
| Restore to Working |
Replace working file with snapshot |
- |
| Apply & Stage |
Apply snapshot and stage for commit |
- |
| Apply All & Stage |
Apply all snapshots from changelist |
- |
| Delete Snapshot |
Remove a saved snapshot |
- |
| Add to Chat |
Add file/snapshot to VS Code Chat |
- |
| Preview |
View diff between HEAD and snapshot |
Click on snapshot |
Workflow Example
Working on a feature and need to try different approaches?
1. Edit config.json (original → version A)
2. Save to "Approach A" changelist ← Snapshot saved, file unchanged
3. Continue editing (version A → version B)
4. Save to "Approach B" changelist ← Another snapshot saved
5. Compare both approaches by clicking each snapshot
6. Decide version A is better
7. Click "Apply & Stage" on Approach A ← File restored & staged
8. Commit!
Smart Changelist Naming
When creating a new changelist, the extension suggests the next name automatically:
| Existing |
Suggestion |
| (none) |
v1 |
v1 |
v2 |
version 1 |
version 2 |
version_1 |
version_2 |
feature-3 |
feature-4 |
Just press Enter to accept or type your own name.
Add to Chat
Right-click any snapshot or working file and select "Add to Chat" to add it to VS Code's Chat panel (works with GitHub Copilot and other chat extensions).
Enable saveSnapshotsToFile setting to save snapshots as real files in .smartchangelists/ folder. This allows CLI-based AI tools like Claude Code, Gemini Code, etc. to access your snapshots directly.
.smartchangelists/
├── v1/
│ └── config.json
├── v2/
│ └── config.json
└── .gitignore
Settings
| Setting |
Description |
Default |
smartChangelists.showEmptyChangelists |
Show changelists with no files |
true |
smartChangelists.autoRefreshOnSave |
Auto-refresh when files are saved |
true |
smartChangelists.confirmBeforeCommit |
Show confirmation before committing |
true |
smartChangelists.confirmBeforeRevert |
Show confirmation before reverting |
true |
smartChangelists.saveSnapshotsToFile |
Save snapshots to .smartchangelists/ for CLI tools |
false |
smartChangelists.enableVersionComparison |
Enable version comparison features |
false |
Version Comparison (Experimental)
Compare multiple versions of the same file across different changelists.
Enable Feature
- Open Settings (
Ctrl+,)
- Search for "Git Changelists"
- Enable "Enable Version Comparison"
Features
- Compare with... - Compare snapshot with HEAD, Working file, or other snapshots
- Compare All Versions - Select any two versions to compare side-by-side
How to Use
- Right-click a snapshot in any changelist
- Select "Compare with..." to compare with:
- HEAD (latest committed version)
- Working (current file in working directory)
- Other snapshots of the same file
- Or select "Compare All Versions" to pick any two versions
How It Works
Unlike traditional shelve/stash systems that store diffs, Git Changelists saves complete file content for each snapshot:
- No Corruption - Snapshots are independent of HEAD changes
- Multiple Versions - Same file can exist in different changelists with different content
- Instant Switching - Restore any version immediately
- Safe Storage - Snapshots persist across VS Code sessions
Requirements
- VS Code 1.85.0 or higher
- Git installed and configured
Contributing
Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.
Author
Harun Gecit
License: Apache 2.0