GitCanvas
GitCanvas is a visual Git dashboard for VS Code. It turns repository status, branch history, commit details, stashes, remotes, and common Git actions into one focused workspace.
Dashboard Preview

Use it when you want quick answers to questions like:
- What changed in my working tree?
- Which commits are on this branch?
- How are my local and remote branches related?
- What files changed in a selected commit?
- Can I create, checkout, stash, commit, pull, or push without leaving VS Code?
- Is a destructive Git action protected by a safety prompt?
Highlights
- Visual commit graph with branch lanes, merge connectors, branch labels, zoom controls, and current-branch centering.
- Changes dashboard for staged, modified, deleted, and untracked files.
- Inline diff previews for working tree files, commits, and stashes.
- Commit list with search by message, author, or hash.
- Commit inspector with changed files, metadata, branch labels, and actions such as cherry-pick, revert, branch, tag, checkout, copy SHA, and reset.
- Branches view for local branches and remote branches in one place, with create and checkout actions.
- Stash management with select, apply, pop, drop, preview diff, and restore-as-commit workflows.
- Repository picker for multi-root VS Code workspaces.
- Fetch, pull, and push controls in the dashboard toolbar.
- GitHub Copilot-powered commit message generation when VS Code language models are available.
- Safety prompts for risky operations, including clean-tree checks, automatic stashing, backup refs before supported history rewrites, and force-push with lease.
Core Views
Changes and Commit Writing
Review your working tree, stage or discard individual files, write a commit message, or generate one with Copilot.

Commit Search
Search the repository history and select a commit to inspect its metadata, branch labels, changed files, and available actions.

Branches and Remotes
See the current branch, create new branches, checkout local branches, and inspect remote tracking branches without a separate remotes tab.

Stashes
Preview stash diffs, apply or pop a stash, drop old stash entries, or restore selected stash entries as commits.

Common Workflow
- Open a Git repository in VS Code.
- Click the GitCanvas icon in the VS Code Activity Bar, or run
GitCanvas: Open.
- Select a repository from the picker if the workspace has more than one Git repo.
- Review the
Changes tab, stage files, and write or generate a commit message.
- Use
Graph, Commits, Branches, and Stashes to inspect history and manage branch work.
- Use
Fetch, Pull, and Push from the toolbar when you are ready to sync.
Git Operations
| Area |
What GitCanvas helps with |
| Working tree |
Stage, unstage, discard, inspect diffs, commit, amend, and stash changes. |
| History |
Search commits, inspect changed files, preview diffs, copy SHAs, tag commits, and create branches from commits. |
| Branches |
Create branches, checkout branches, see local branches, and see remote tracking branches. |
| Stashes |
Apply, pop, drop, preview, select, and restore stash entries as commits. |
| Remotes |
Fetch, pull, push, and view remote branches inside the Branches view. |
| Safety |
Guard checkout, reset, revert, cherry-pick, merge, drop, and force-push style workflows with prompts and backup behavior where supported. |
Copilot Commit Messages
GitCanvas can ask VS Code's available language model provider to draft a commit message from the selected Git context. This is optional and only runs when you press Generate.
If no compatible Copilot or language model provider is available, you can still write and commit manually.
Safety and Git Behavior
GitCanvas runs Git through argument-array execution rather than shell-interpolated command strings. Branch names, refs, file paths, tags, and commit hashes are validated before they are passed into Git command entry points.
Destructive or history-changing workflows are guarded with repository-state checks. Supported reset and history rewrite paths create backup refs under refs/gitcanvas-backup/ before moving HEAD. Force pushes use --force-with-lease, not bare --force.
Branch parentage in the visual graph is inferred because Git does not store "created from branch" metadata directly. GitCanvas uses reflog hints, branch-name matching, and merge-base distance to produce a practical visual layout.
Privacy and Storage
GitCanvas is local-first.
- It reads repository information through your local Git installation.
- It does not require a hosted account or external GitCanvas service.
- It does not write analytics files into your project.
- Copilot commit generation may send selected diff and commit context to the VS Code language model provider only when you explicitly use the generation action.
Requirements
- VS Code
1.92.0 or newer.
- Git installed and available on your machine.
- A Git repository opened in VS Code.
- GitHub Copilot or another VS Code language model provider is optional and only needed for generated commit messages.
Commands
| Command |
Purpose |
GitCanvas: Open |
Opens the GitCanvas dashboard. |
GitCanvas: Refresh |
Reloads repository status and history. |
GitCanvas: Commit |
Commits staged changes from GitCanvas. |
GitCanvas: Stage File |
Stages a file. |
GitCanvas: Unstage File |
Unstages a file. |
GitCanvas: Discard File |
Discards a file change after confirmation. |
GitCanvas: Create Branch |
Creates a new branch. |
GitCanvas: Checkout Branch |
Checks out a branch with safety handling. |
GitCanvas: Fetch |
Fetches from the configured remote. |
GitCanvas: Pull |
Pulls the current branch. |
GitCanvas: Push |
Pushes the current branch. |
Getting Started
- Install GitCanvas.
- Open a folder that contains a Git repository.
- Click the GitCanvas icon in the VS Code Activity Bar, or run
GitCanvas: Open from the Command Palette.
- Use the dashboard tabs to move between Changes, Graph, Commits, Branches, and Stashes.
GitCanvas is developed and maintained by Mohammad Joynul Abedin (Shokal).
| |