GoodIdeaGit — IDEA-style GoodIdeaGit for VS Code
English | 简中文
Short Description (tagline)
Bring IDEA’s powerful Git workflow to VS Code: changelists, visual log, shelve, blame, SFTP upload, and remote diff — all in one place.
Features show
### Stop switching between terminals, scattered extensions, and the native SCM panel.
GoodIdeaGit brings the mature, battle-tested Git management experience of IntelliJ IDEA directly into VS Code. Built on top of the official VS Code Git Extension API, it complements — not replaces — your existing Git setup. Whether you’re juggling multiple tasks, investigating history, or syncing files to a remote server, GoodIdeaGit gives you a unified, keyboard-friendly workspace.
Design principle: Like IntelliJ, we run Git porcelain commands and parse their output. We never do anything Git itself wouldn’t do. Your repositories stay 100% compatible with native Git.
✨ Key Features
📋 Changelists — Organize changes by task
Group uncommitted changes into logical lists (e.g., “Feature A”, “Bugfix B”). Switch the active changelist and new edits automatically go there. Drag & drop files between lists, commit a single changelist, or even split changes within the same file into different lists using interactive staging (git add -p).
- Create, delete, and activate changelists
- Move files between lists via drag & drop or context menu
- Commit individual changelists with auto-generated messages
- Track context: deactivate a changelist and restore it later with its associated task
🌳 Visual Git Log & History Investigation
A rich, interactive commit graph showing branches, merges, and tags.
- Branches pane: checkout, create, delete, favorite, group by directory, compare with current
- Commits pane: search by message, hash, author, date, or regex; filter by branch/folder; open results in new tabs
- Changed Files & Commit Details: inspect diffs, view full file history, compare any two commits
- Snapshot view: open the entire repository at a specific revision
- Amend, cherry-pick, rebase, merge directly from the graph
📦 Shelve & Stash — Temporary storage done right
- Shelve: selectively shelve files or entire changelists. Stored as standard patch files (
.patch + metadata) under .vscode/shelves/. Apply multiple times with git apply --3way.
- Stash: full Git stash support — create, apply, pop, drop, branch from stash, keep-index.
- Unified view: optionally merge Stash and Shelf into one tab.
👤 Git Blame Annotations
Right-click the gutter → Annotate with Git Blame. See author and date for every line. Hover for full commit details. Right-click to Show Diff against the previous revision. Fully configurable format and keyboard shortcuts.
✅ Commit Dialog with Line-Level Staging
- File selection grouped by changelist
- Expand files to cherry-pick individual hunks
- Commit message history and templates
- Commit or Commit and Push buttons
- Pre-commit checks and Amend option
One shortcut (`Alt+``) opens a unified command palette for every Git action: Commit, Push, Pull, Fetch, Merge, Rebase, Cherry-pick, Reset, Revert, Stash/Shelve, Create Branch, Checkout, and more.
🔀 Three-Way Merge Conflict Editor
A dedicated merge view with Local / Result / Remote panels. Navigate conflicts one by one, accept local, remote, or both, and edit the result directly with syntax highlighting and token-level diff.
In both the pending changes list and the committed node file list, you can now right-click any file to access:
| Action |
Description |
| Open Source File |
Jump directly to the file in the editor. |
| Upload File |
Upload the file to your configured SFTP server (one click, no terminal). |
| Diff with Remote |
Compare the local file with its counterpart on the SFTP server. |
SFTP configuration: Set up your server details in VS Code settings (GoodIdeaGit.sftp.*). Once configured, upload and remote diff work seamlessly from the context menu.
This feature bridges the gap between local Git management and remote deployment — perfect for web developers, DevOps, and anyone who edits files directly on a server.
⚙️ Configuration
| Setting |
Description |
Default |
GoodIdeaGit.sftp.host |
SFTP server hostname |
"" |
GoodIdeaGit.sftp.port |
SFTP port |
22 |
GoodIdeaGit.sftp.username |
SFTP username |
"" |
GoodIdeaGit.sftp.remotePath |
Base remote path |
"" |
GoodIdeaGit.blame.format |
Blame annotation format |
${author} ${date} |
GoodIdeaGit.changelists.autoTrackContext |
Enable context tracking |
true |
GoodIdeaGit.shelve.location |
Custom shelve storage path |
.vscode/shelves |
📋 Requirements
- VS Code 1.80 or newer
- Git installed and available in
PATH
- Works with Cursor, Windsurf, VSCodium, and other VS Code-based editors
- Multi-root workspaces supported
- Does not replace the built-in Git extension — they work side by side
🚀 Getting Started
- Install GoodIdeaGit from the Marketplace.
- Open a Git repository in VS Code.
- Look for the GoodIdeaGit icon in the Bottom Panel.
- Manage the changelists, branches, and commit points. Browse the changed files, view commit details, compare differences, or right-click a file to upload it to the server via SFTP.
💬 Feedback & Support
- Found a bug? Open an issue
- Love the extension? Leave a ⭐⭐⭐⭐⭐ review — it helps a lot!
This extension is not affiliated with JetBrains or IntelliJ IDEA. “IntelliJ-style” refers to the workflow inspiration only.