Skip to content
| Marketplace
Sign in
Visual Studio Code>SCM Providers>Click GitNew to Visual Studio Code? Get it now.
Click Git

Click Git

WunderForge

|
8 installs
| (1) | Free
Right-click any file or folder in VS Code to stage, commit, restore, diff, checkout, fetch, pull, or push the right Git repo.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Click Git

Turn VS Code Explorer and editor tabs into a file-and-folder-aware Git control surface.

Click Git is for workspaces with many repos, and repos with many files and folders. Right-click the file or folder your attention is already on, then stage, stash, restore, diff, commit, checkout, delete or rename a local branch, fetch, pull, or push from there.

No terminal detour. No cd archaeology. No rebuilding the same pathspec by hand.

Right-click a file or folder. Run the Git command you meant.

Marketplace | GitHub

Click Git turns VS Code Explorer folders into precise Git actions

Four Ways To Click Git

Explorer folder

Right-click a VS Code Explorer folder to run Click Git folder commands

Explorer file

Right-click a VS Code Explorer file to run Click Git file commands

Editor tab

Right-click a VS Code editor tab to run Click Git file commands

Editor body

Right-click inside a VS Code editor to run Click Git file commands

Watch The Flow

Click Git demo

Why It Exists

VS Code is great when you are focused on one clean repository. Real work is often messier.

You may have a large folder for your knowledge base, notes, prototypes, and active projects. Some folders are just documents. Some are standalone Git repos. Some are nested experiments. When you want to stage or inspect one project, the friction is tiny but constant: open terminal, cd into the right directory, run Git, jump back.

The same problem shows up inside a single repo. You may touch several components, packages, generated folders, or individual files, then only want to commit the part that is actually ready.

Click Git removes that little tax. Pick the file or folder in Explorer, or the open file tab, and act on it.

Features

File actions

  • Stage, unstage, stash, restore, status, diff, or commit one selected file.
  • Use the Explorer file context menu, the editor tab context menu, or the editor body context menu.
  • Keep nearby changed files out of the command unless you select them yourself.

Folder actions

  • Stage, unstage, stash, restore, status, diff, or commit one selected folder.
  • Use explicit Git pathspecs so the command is scoped to that folder.
  • Pull many nested repositories under a parent folder, with dirty repos skipped by default.

Repo and branch actions

  • Checkout a local branch, a remote tracking branch, or a new local branch from anywhere inside the owning repository.
  • Fetch, pull, or push the owning repository from a file or folder inside it.
  • Delete or rename local branches with explicit prompts and safe defaults.

Built For

  • Personal knowledge bases that also contain project repos.
  • Workspace folders that collect many independent repos.
  • Single repos where you commit one component, package, feature folder, or file at a time.
  • Developers who review generated or AI-assisted changes one path at a time.
  • People who prefer the Explorer tree for navigation but still want precise Git actions.
  • Anyone tired of cd ../../that-one-repo for small Git chores.

How It Works

  1. Right-click a file or folder in VS Code Explorer, right-click an editor tab, or right-click inside an open file.
  2. Choose a Click Git:* command.
  3. Click Git resolves the owning Git repository and runs the operation with an explicit pathspec.
  4. Results and longer output go to the Click Git output channel.

Stage, stash, unstage, commit, restore, status, and diff are path-scoped for the selected file or folder.

Git checkout, fetch, pull, and push are repository-scoped. If you run Checkout Branch, Fetch Repo, Pull Repo, or Push Repo from a file or subfolder, Click Git resolves the owning repository and runs the command at the repo root. It does not claim to protect against Git commands run from terminals, VS Code SCM, other extensions, or external Git clients.

Checkout Branch lists local and remote branches in a searchable Quick Pick. You can select an existing local branch, select a remote branch to create a local tracking branch, or type a new branch name to create it from the current HEAD. Click Git does not fetch, stash changes, force checkout, pull before checkout, delete branches, or guess branch names.

Delete Branch lists local branches except the current branch, asks for confirmation, and runs safe git branch -d. It does not delete remote branches or force-delete unmerged local branches.

Fetch Repo runs git fetch at the owning repository root. It does not pull, merge, rebase, checkout, or mutate local branches. --prune is available as an opt-in setting.

Rename Branch lists local branches and runs git branch -m. It does not rename remote branches, push renamed branches, or delete old upstream branches.

Stash File and Stash Folder run git stash push -u with the selected pathspec, including untracked files under that path. They do not apply, pop, drop, or list stashes.

Push uses the current branch's configured upstream. Click Git does not guess origin, choose among multiple remotes, set upstream automatically, force push, push tags, or bulk-push nested repositories. If no upstream is configured, Push Repo fails closed and asks you to set upstream with Git CLI or VS Code Source Control first.

Safety Model

  • File- and folder-scoped commands use explicit Git pathspecs.
  • Checkout commands are repository-scoped and use standard Git checkout behavior.
  • Delete Branch only deletes non-current local branches with safe git branch -d.
  • Fetch commands are repository-scoped and do not change the current branch.
  • Pull commands are repository-scoped and default to --ff-only.
  • Push commands are repository-scoped and use plain git push against the current branch upstream.
  • Rename Branch only renames local branches.
  • Stash File and Stash Folder use explicit pathspecs and only create a stash; they include untracked files under the selected path and do not restore stashes.
  • Restore keeps untracked files by default.
  • If Git reports a stale .git/index.lock, Click Git explains the lock, can copy the lock path, and only deletes it after an explicit confirmation.
  • The extension requires a trusted workspace before it runs Git commands.
  • The MVP does not install Git hooks, mutate skip-worktree, rewrite commits, or change repository configuration.

Settings

  • clickGit.pull.ffOnly: use --ff-only for pull commands. Default: true.
  • clickGit.fetch.prune: use --prune for fetch commands. Default: false.
  • clickGit.pullNested.maxDepth: maximum directory depth for nested repository discovery. Default: 4.
  • clickGit.pullNested.includeDirtyRepos: pull nested repositories with uncommitted changes. Default: false.
  • clickGit.commit.autoStageFolder: stage the selected file or folder before committing it. Default: true.
  • clickGit.push.confirmBeforePush: confirm repository path, current branch, and upstream before pushing. Default: true.

Development

npm install
npm run compile
npm test
.\scripts\check.ps1

Manual VS Code Smoke Test

  1. Open this folder in VS Code.
  2. Press F5 and choose Run Click Git Extension.
  3. In the Extension Development Host, open any folder that contains a Git repository.
  4. Right-click a file or folder in Explorer, an editor tab, or inside an open file, and run one of the Click Git:* commands.
  5. For status, diff, checkout, delete branch, fetch, pull, push, rename branch, stash, and nested pull, inspect the Click Git output channel.

Fast disposable repo setup:

$tmp = Join-Path $env:TEMP "click-git-manual"
Remove-Item -LiteralPath $tmp -Recurse -Force -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Force -Path "$tmp\repo\selected","$tmp\repo\outside" | Out-Null
Set-Location "$tmp\repo"
git init -b main
git config user.name "Click Git Manual"
git config user.email "manual@click-git.test"
"base" | Set-Content selected\file.txt
"base" | Set-Content outside\file.txt
git add .
git commit -m initial
"changed" | Set-Content selected\file.txt
"outside" | Set-Content outside\file.txt
code "$tmp\repo"

Expected quick check:

  • Right-click selected and run Click Git: Stage Folder.
  • git status --porcelain should show M selected/file.txt and M outside/file.txt.
  • Right-click selected and run Click Git: Checkout Branch, then type a branch name to create and checkout a new local branch.

Publishing

See docs/PUBLISHING.md.

Contributing

See CONTRIBUTING.md.

License

MIT. See LICENSE.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft