Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Git Graph+

VS Code MarketplaceOpen VSX

CIcodecov

License

ν•œκ΅­μ–΄

A modern, full-featured Git GUI for VS Code. Visualize your commit history, manage branches, and perform advanced git operations - all without leaving your editor.

Staging, committing, and inline blame use VS Code's built-in Source Control. Git Graph+ focuses on everything else.

Git Graph+


Highlights

  • Interactive Commit Graph - Color-coded branch rails and merge lines for clear history at a glance
  • Full Git Workflow - Branch, merge, rebase, cherry-pick, reset, stash, worktree, tags, and remote operations
  • Drag to Rebase & Merge - Drag one branch onto another to rebase or merge it - no commands needed
  • Interactive Rebase - Drag-to-reorder commits with per-commit action control (pick, squash, fixup, drop, etc.)
  • Fixup & Squash Workflow - Create fixup!/squash! commits from the graph, then fold them in with the interactive-rebase autosquash toggle
  • Conflict Prediction & Resolution - Preview conflicting files before you run a merge/rebase, then resolve in the VS Code 3-way merge editor
  • Built-in Diff Viewer - Shiki-powered syntax highlighting with image diff (side-by-side, swipe, onion-skin)
  • Markdown Commit Messages - Commit descriptions render as formatted Markdown in the details panel, with a Markdown/Plain toggle
  • Advanced Git Tooling - Git Flow, Bisect, LFS with file locks, Submodules, Statistics, and Reflog with dangling-commit recovery

Features

Commit Graph & History

FeatureDescription
Graph VisualizationInteractive commit graph with color-coded branch rails and merge lines
Commit OrderingTopological ordering like Fork for clear branch history
Three ViewsGraph for visual history, Reflog for git reference log history, Statistics for analytics
Commit DetailsClick any commit to view metadata, changed files, and full diffs in a resizable bottom panel
Markdown MessagesCommit messages containing Markdown render formatted in the details panel, with a Markdown/Plain toggle
Commit LinksIssue, PR, and merge-request references in commit messages become clickable links - GitHub/GitLab auto-detected from origin, plus custom regex rules
Commit ComparisonSelect a base commit, then click another to compare - select multiple commits to toggle a combined changes panel, or compare any commit to your working tree
SearchFind commits by message, author, date range, hash, or changed file - with result highlighting and keyboard navigation
Jump to HEADA button beside the search box scrolls to the current HEAD commit (emphasized when off-screen); search also matches the HEAD keyword
Keyboard NavigationMove the graph selection with arrow keys; Ctrl/Cmd jumps to the first parent or newest child, remembering the path back
Branch FilterFilter the commit graph to show only commits reachable from a selected branch
Uncommitted ChangesShows pending uncommitted changes as a virtual node. Clicking it opens the VS Code SCM view for staging/committing.
Push StatusBlue dot for local-only commits (not pushed), gray dot for remote-only commits (remote ahead)
AvatarsGravatar avatars displayed next to author names
ThemesFull support for light, dark, and high-contrast VS Code themes

Branch & Tag Management

FeatureDescription
Branch OperationsCreate, rename, delete, and checkout branches
Branch ToolbarFork-style split button: create a branch (or worktree) seeded from the current branch, with Lean Sync (rebase the current branch onto the default branch), Lean Finish (merge it into the default branch), and a nested Git Flow menu
AmendAmend the last commit directly from the graph with a single click
MergeDefault, --no-ff, --ff-only, and squash merge strategies
RebaseStandard rebase and interactive rebase with drag-to-reorder UI
Interactive RebaseKeyboard-driven visual UI with action dropdown (pick, reword, edit, squash, fixup, drop), drop warnings, and an autosquash toggle that folds fixup!/squash! commits into their targets - start it from a branch or a multi-commit selection. An optional classic mode runs git rebase -i in an integrated terminal (gitGraphPlus.interactiveRebase.mode)
Drag to Rebase/MergeDrag one branch onto another in the graph to rebase it onto, or merge it into, the target
Squash CommitsSelect multiple consecutive commits in the graph and squash them into one
Fixup / Squash CommitCommit staged changes as a fixup! or squash! of any commit straight from its context menu, ready for autosquash
Cherry-pick & RevertApply or undo specific commits (one or several selected at once), with --no-commit option
ResetReset to any commit with soft, mixed, or hard mode
TagsCreate lightweight or annotated tags; view tag details, push to remote, delete locally or from remote
Upstream TrackingAutomatic local/remote branch matching based on upstream configuration

Remote Operations

FeatureDescription
Fetch / Pull / PushWith remote selection dialog and progress notification - fetch skips the dialog when only one remote exists
Remote ManagementAdd and remove remotes
Force Push--force-with-lease (safe) or --force (override) modes, with visual warning
Auto FetchConfigurable periodic fetch interval (1–60 minutes)
Remote CheckoutCheckout remote branches with local tracking branch creation dialog
Pull PromptAutomatic pull suggestion when checking out a branch that is behind its remote

Conflict Resolution

FeatureDescription
Conflict PredictionMerge and rebase modals preview which files would conflict, listed on hover before you run the operation
Auto DetectionDetects conflicts during merge, rebase, cherry-pick, and revert
Conflict BannerShows conflicting files with per-file status indicators
Editor IntegrationClick conflict files to open in VS Code's 3-way merge editor
Resolve & StagePer-file "Mark as Resolved" with automatic staging
Continue / AbortOne-click buttons to continue or abort the operation

Diff Viewer

Diff Viewer

FeatureDescription
File TreeHierarchical file browser with status badges (Added, Modified, Deleted, Renamed, Copied)
Syntax HighlightingPowered by Shiki - accurate, editor-quality syntax colors
Image DiffSide-by-side visual preview with swipe comparison for image changes
Patch ExportSave any commit as a .patch file
Open in EditorRight-click any file in the diff viewer to open it or view its changes in VS Code
File Path ActionsRight-click a file to reveal it in the OS file explorer, copy its absolute path, or copy its repo-relative path
Reverse ChangesUndo a whole file, a single hunk, or gutter-selected lines of a commit against your working tree β€” and copy selected lines β€” right from the diff

Stash & Worktree

FeatureDescription
StashSave, apply, pop, drop, and rename - with untracked files and keep-index options
Stash in GraphStash entries appear as badges in the commit graph with dedicated context menu
WorktreeList, add, remove, and prune worktrees, create one straight from the commit graph context menu, open them in a new window or reveal in the file explorer, with linked branch cleanup

Advanced Tools

Reflog

FeatureDescription
Git FlowInitialize and manage feature, release, and hotfix branches
Git BisectVisual bisect UI - start, mark good/bad, and reset
Git LFSView LFS-tracked files and manage file locks
SubmodulesView status, update submodules, and switch graph to submodule repos
StatisticsCommits by author (with Gravatar), activity heatmap
ReflogBrowse the full git reference log with semantic color-coded sub-actions (amend, squash, etc.), search, action filters, and per-branch view. Includes dangling commit detection and recovery.

Multi-Repository & Submodules

  • Auto-discovers submodules within the workspace
  • Switch between repositories via the toolbar dropdown

Activity Bar Sidebar

  • Tree views for Branches, Remotes, Tags, Stashes, and Worktrees
  • Click to open quick action menu, right-click for full context menu
  • Branches sorted: main/master first, then alphabetical

Internationalization

  • English (default), Korean, and Chinese Simplified
  • Configurable via gitGraphPlus.locale setting
  • Git terms (commit, merge, rebase, push, pull, fetch, etc.) remain untranslated

Getting Started

  1. Install from the VS Code Marketplace
  2. Open a folder containing a Git repository
  3. Open Git Graph+ using any of:
    • Command Palette - Git Graph+: Open
    • Activity Bar - Click the Git Graph+ icon
    • SCM title bar, Status bar, or Editor title bar - Click the git-merge icon

Tip

For the best experience, enable these VS Code settings:

  • git.autofetch: true - keeps the graph up to date by periodically fetching from all remotes
  • git.fetchPrune: true - removes stale remote-tracking branches on each fetch

Settings

SettingDefaultDescription
gitGraphPlus.autoRefreshtrueAuto-refresh on repository changes
gitGraphPlus.timeout60Max time (seconds) to wait for a Git command before abort
gitGraphPlus.initialCommitCount200Commits loaded on first render / refresh (lower = faster in huge repos)
gitGraphPlus.loadMoreCommitCount50Extra commits fetched per Load more commits click
gitGraphPlus.localeautoUI language (auto, en, ko, zh-cn)
gitGraphPlus.graphSortOrdertopologicalCommit sort order (topological, date, author-date)
gitGraphPlus.interactiveRebase.modeuiInteractive rebase mode (ui visual editor, classicgit rebase -i in a terminal)
gitGraphPlus.showSignatureStatustrueShow GPG/SSH signature status in the graph
gitGraphPlus.commitMessageLinks[]Custom { pattern, url } regex rules that turn commit-message text into clickable links
gitGraphPlus.autoDetectRepoLinkstrueAuto-link #123 issues (github.com/gitlab.com) and !123 GitLab MRs from the origin remote
gitGraphPlus.branchBadgeBarThicknessthinBranch badge bar thickness (thin, medium, thick)
gitGraphPlus.branchColors[]Fixed branch colors by name pattern (regex β†’ hex)
gitGraphPlus.graphColors12 colorsColor palette auto-assigned to graph rails (hex strings)

Operation Defaults

Preset the default options for each operation dialog under gitGraphPlus.defaults.* (configure in VS Code Settings):

OperationOptions (under gitGraphPlus.defaults.)
Pushpush.force, push.setUpstream, push.allTags
Pullpull.rebase, pull.stash
Fetchfetch.allRemotes
Mergemerge.mode, merge.pushAfter, merge.deleteSource
Rebaserebase.autostash, rebase.pushAfter
Amendamend.keepMessage, amend.resetDate, amend.resetAuthor, amend.only, amend.pushAfter
Checkoutcheckout.dirty, checkoutRemote.dirty
Create BranchcreateBranch.checkout, createBranch.publish
Create TagcreateTag.push
Cherry-pickcherryPick.noCommit, cherryPick.pushAfter
Revertrevert.noCommit, revert.pushAfter
Resetreset.mode
StashstashSave.includeUntracked, stashSave.keepIndex
Delete BranchdeleteBranch.force, deleteBranch.deleteRemote
Delete TagdeleteTag.deleteRemote
Remove WorktreeremoveWorktree.deleteBranch

Requirements

  • VS Code 1.85.0 or later
  • Git installed and available in PATH (or configured via the git.path setting)

Acknowledgements

Changelog

See CHANGELOG.md for release history.

License

Apache-2.0

About

πŸ’» A modern Git visualization tool for VS Code. Understand your commit history, manage branches, and work with Git more intuitively.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages