Nifty Git
14-day free trial, then $39 once. A Git client inside VS Code: the commit graph, drag-and-drop merge and rebase, an interactive rebase editor, a conflict workflow, undo for what you do locally, stashes, worktrees and file history. No account and no cloud of ours: nothing leaves your machine except requests to your own git host when you ask for them.
Maintained. No sign-in. No telemetry. Works in VS Code, Cursor, Windsurf, VSCodium and other editors that use Open VSX.
Features


- The whole repository in one place. Every branch, remote branch, tag, stash and worktree in the sidebar, the commit graph in the middle, and a commit's message, author, signature and files on the right, as a list or as a folder tree. Click a file for its diff. Handles 100,000-commit histories: commits load as you scroll.
- Drag and drop. Drop a branch onto another to merge or rebase, drop a commit onto your branch to cherry-pick it.
- Interactive rebase, without the text editor. Reorder commits by dragging, and pick, reword, squash, fixup, edit or drop each one in a list. Reword, squash into parent and drop are also one right-click away.

- Conflicts, step by step. When a merge, rebase or cherry-pick stops, the conflicted files are listed with Open in merge editor (VS Code's three-way editor), take ours, take theirs and mark resolved, then Continue, Skip or Abort.
- Undo what you do locally, and redo it. Every local operation records where the branches were and, for anything that touches uncommitted work, a snapshot of the working tree. Undo puts it all back, and refuses if a branch moved since. Deleted a branch? Hard reset? Dropped a stash? Undo. Changed your mind again? Redo. What has left your machine can't be taken back (a push, a branch or tag deleted on the remote), and the command preview says so before you run it.

- See the commands first. Before an operation that rewrites history, discards changes or changes a remote, Nifty Git shows the exact git commands it will run. Run them, copy them, or cancel. Turn it on for every operation if you want to learn git, or off if you don't.

- Stashes and worktrees. Stash with a message, with or without untracked files, apply, pop, drop or turn a stash into a branch. Create worktrees from the sidebar and open them in a new window.
- Branches done right. Ahead/behind counts, upstreams, gone branches, rename, delete with undo, compare any two branches or any two commits (commits on each side and the changed files), and file history with renames followed. Branches group into folders by their names (
feature/…), and the ones you mark as favourites sit at the top.
- A graph you can shape. Hide a branch from the graph or solo the ones you care about, choose which columns show and how wide they are, and switch to compact rows to see more history at once. A minimap beside the scrollbar shows where the branch tips, tags, HEAD and your search matches are.
- Any repository, not just the workspace. Open a repository from anywhere on disk, clone one with progress and a Cancel button (the full history or only the latest commits), pick one of your own repositories on a host to clone without pasting a URL, or initialise a folder. Open repositories sit in tabs, recent ones stay one click away, and a set of tabs can be saved as a group that opens together.
- Fetch in the background. Auto-fetch the open repository every few minutes, and fetch every repository in the workspace at once from the dashboard.
- Commit from the panel. Stage, unstage and discard files, folders or everything, write the message, commit, amend, and skip the hooks when you must. Read a file's changes with whitespace ignored. Add a file or its folder to
.gitignore from the file list. Signature status is shown on every commit.
- Stage hunks and lines. Open an uncommitted file's diff in the panel and stage, unstage or discard a hunk or the lines you select. Stash only the files you tick.
- Blame. See who last changed each line of a file, at any commit, with the commit a click away. Inline blame shows it at the end of the current line in the editor.
- Commit helpers. A Conventional Commits type and scope picker, co-authors from the repository's recent authors, and your commit template prefilled.
- Lost commits, found. A reset too far, a dropped rebase, a deleted branch: the Lost commits section lists every commit the reflog still knows, ready to branch from or cherry-pick.
- Bisect without the manual. Mark a good and a bad commit, test, click Good or Bad, and the first bad commit is found and shown in the graph.
- Submodules, LFS, patches, remotes. Initialise, update, add and remove submodules and open one in its own graph; track patterns, pull files, and lock and unlock files with Git LFS; save commits or working changes as patch files and apply patches with
git am or git apply; add, rename, re-point and remove remotes; check out tags, push them all, and delete a tag on the remote.
- Sparse checkout. Pick the folders you want in a big repository and leave the rest out of the working tree. Turn it off again in a click.
- Git Flow built in. Initialise it with your branch names and prefixes, start features, bugfixes, releases and hotfixes, and finish them: a release merges into main, gets its tag, merges back into develop and is deleted, every step shown first and undoable. No git-flow installation needed, and repositories set up with git-flow are recognised.

- Several commits at once. Ctrl-click or shift-click commits to cherry-pick, revert, squash into one or save them as a patch together. Cherry-pick can also apply the changes without committing.
- Split a commit. Take a commit apart again: its changes come back unstaged, you commit them in pieces, and Continue replays the rest. Abort puts everything back.

- Pull requests, start to finish. List open pull requests with their CI checks, read the description, comments and reviews, see the changed files with the comments on their lines, comment on a line or answer a thread, approve, request changes, merge with the method you choose, close, check one out, or create one for the current branch with reviewers, assignees, labels and your repository's template. Works with GitHub, GitLab, Bitbucket Cloud, Azure DevOps, Gitea and Forgejo, and with your company's own GitHub Enterprise, GitLab, Bitbucket Server or Gitea. GitHub uses VS Code's own sign-in; the others use an access token you paste once, kept in VS Code's secret storage. Requests go only to your repository's own host, and only when you open the list or press a button.
- Issues. Open issues from GitHub, GitLab, Gitea, Azure Boards, Jira or a Trello board in the sidebar, all of them or only yours. Read one with its comments, create one, comment, and move it (close, reopen, or your workflow's next state), and start work with "Create branch from issue", named after the issue and placed under your Git Flow feature prefix when you use one.
- Your work across repositories. One pane lists the pull requests you opened, the ones waiting for your review and the issues assigned to you, for every repository open in the client.

- Profiles. Save your identities once (Work, Personal, a client): name, email, signing key and the SSH key for the remote. Apply one to a repository in a click, and get a hint when a repository's remote matches a profile you haven't applied. Profiles live in your settings, so Settings Sync carries them.
- Identity, signing and hooks. Set the name and email for this repository or globally, turn commit signing on with a GPG or SSH key, and enable or disable hooks with a click.
- SSH and GPG keys. See the keys on this computer, generate a new SSH or GPG key, copy its public half or add it to your account on the host, all from the Keys tool. Pick the key under Signing or in a profile to sign commits with it.
- Your account on the host. Create a repository on GitHub, GitLab, Bitbucket, Azure DevOps or Gitea for the one you have open and add it as the remote, or fork the remote's repository and add the fork.
- Links to a commit. Copy a link to a commit or a branch; opening it on another machine shows that commit in Nifty Git there, or offers to clone the repository. A link names the repository by its remote, never by a path on your disk.
- Keyboard friendly. Commit, stage, stash, check out, branch, merge, rebase, compare, undo and redo are VS Code commands: run them from the command palette or bind them to keys. Repository tabs, file trees and the graph's column widths work from the keyboard too.
- A guided start. A short walkthrough on VS Code's Welcome page shows the graph, the command preview, undo, committing and opening repositories.
- In your language. The panel and its messages come in English, German, French, Spanish, Brazilian Portuguese, Japanese and Simplified Chinese. They follow VS Code's display language, or set
nifty.git.language to choose one yourself, for example to keep git's own English vocabulary.
- Repository health and a workspace dashboard. Object and pack sizes, the biggest files in the history, and one card per repository in the workspace with branch, ahead/behind, changes and the last commit.

- Credentials where you expect them. When a remote asks for a username and password, or an SSH key for its passphrase, the prompt appears as a VS Code input box. Your credential helper (Git Credential Manager, the macOS keychain) runs first as usual.
- Careful with what a repository or a server hands it. A branch or tag named like a git option is refused instead of being passed to git. Text from git and from hosting services is always shown as plain text, never as a link that runs something. Hidden and direction-changing characters in names and paths are shown as markers, so two names that look alike can be told apart. Nifty Git runs only in folders you trust (VS Code's Workspace Trust). Access tokens are kept in VS Code's secret storage, one per server address, and are not sent over plain http without asking first.
- Private by design. No account, no telemetry, no AI, no cloud. Avatars from Gravatar are off unless you turn them on.
Open it with Ctrl+Alt+Shift+G (Cmd+Alt+Shift+G on Mac), the Nifty Git button in the status bar, or the branch icon in the Source Control view.
Buying
Nifty Git starts a 14-day trial the first time you open it, with every feature and no card. After that it needs a license key: $39 once per developer, with updates for a year and no expiry on the key (it works on up to 5 machines). Teams pay $19 per seat per year, and each developer on a seat gets their own key. Free for students and open-source maintainers on request. 30-day refunds. Buy at https://getnifty.dev/git, then run Nifty Git: Enter License Key. Nifty Git is commercial software: its license is in the LICENSE file that comes with it.
Commands
| Command |
What it does |
Nifty Git: Open Nifty Git |
Open the client (Ctrl+Alt+Shift+G) |
Nifty Git: Fetch |
git fetch --all --prune --tags |
Nifty Git: Pull… |
Pull with merge, rebase or fast-forward only |
Nifty Git: Push |
Push the current branch (sets the upstream when there is none) |
Nifty Git: Undo Last Git Operation |
Undo the last operation in this repository |
Nifty Git: File History |
The history of the current file (also in the Explorer's right-click menu) |
Nifty Git: Blame File / Toggle Inline Blame |
Who last changed each line of the current file; turn the end-of-line blame on or off |
Nifty Git: Open Repository… / Clone Repository… / Initialise Repository… |
Open a repository outside the workspace, clone one, or run git init in a folder; it opens in the client and stays in its list of recent repositories |
Nifty Git: Clone from Your Account… |
Pick one of your own repositories on your host from a list and clone it, without pasting its URL |
Nifty Git: Open Repository Group… / Save Open Repositories as Group… |
Open every repository of a saved group as tabs in the client; save the repositories that are open now as a group |
Nifty Git: My Pull Requests and Issues |
Open the client on your own open pull requests and the issues assigned to you, across the open repositories |
Nifty Git: Copy Link to Current Commit |
Copy a link that opens the checked-out commit in Nifty Git on any computer that has the repository; it names the repository by its remote, never by a folder |
Nifty Git: Commit Staged Changes… |
Commit what is staged (Ctrl+Alt+Shift+C) |
Nifty Git: Stage All Changes / Unstage All Changes |
Stage or unstage everything |
Nifty Git: Stash Changes… / Pop Latest Stash |
Stash your changes with a message; apply and drop the newest stash |
Nifty Git: Check Out Branch… |
Pick a local or remote branch and check it out (Ctrl+Alt+Shift+B) |
Nifty Git: Create Branch… |
Create a branch at the current commit, checked out or not |
Nifty Git: Merge Branch into Current… |
Pick a branch and merge it into the current one |
Nifty Git: Rebase Current Branch onto… |
Pick a branch and rebase the current one onto it |
Nifty Git: Compare Two Branches… |
Pick two branches and see the commits on each side and the files that differ |
Nifty Git: Redo Last Undone Git Operation |
Redo what the last undo took back |
Nifty Git: Git Flow: Start… / Git Flow: Finish Current Branch |
Start a feature, bugfix, release or hotfix; finish the one that is checked out |
Nifty Git: Apply Profile… |
Apply one of your identity profiles to this repository |
Nifty Git: Toggle Auto-Fetch |
Turn background fetching on (every 5 minutes) or off |
Nifty Git: Enter License Key… / Remove License Key from This Machine |
Manage the license |
Settings
| Setting |
Default |
What it does |
nifty.git.confirmCommands |
destructive |
When to show the git commands before an operation: always, destructive (rewrites history, discards changes or changes a remote) or never |
nifty.git.pageSize |
500 |
Commits loaded at a time |
nifty.git.commitOrder |
topo |
topo keeps branches together; date or author-date sort by time |
nifty.git.showRemoteBranches |
true |
Show origin/… branches in the graph |
nifty.git.showTags |
true |
Show tags in the graph |
nifty.git.showStash |
true |
Show stashes in the graph |
nifty.git.dateFormat |
relative |
relative ("3 days ago") or absolute |
nifty.git.avatars |
false |
Show Gravatar avatars (sends a hash of each author's email to gravatar.com) |
nifty.git.showStatusBarItem |
true |
Show the Nifty Git button in the status bar |
nifty.git.autoFetchMinutes |
0 |
Fetch the repository open in Nifty Git in the background every this many minutes (git fetch --all --prune); 0 turns it off |
nifty.git.inlineBlame |
false |
Show who last changed the current line, at the end of the line |
nifty.git.conventionalCommits |
true |
Show the Conventional Commits helper above the commit message box |
nifty.git.profiles |
[] |
Identity profiles; manage them under Tools, Identity and profiles |
nifty.git.hosts |
{} |
Which service your own git servers run, by host name: github (GitHub Enterprise Server), gitlab, bitbucket-server or gitea, so pull requests and issues work for them. When the server's web address differs from the remote's host, give { "service": "gitlab", "url": "https://git.example.com:8443/gitlab" } instead. Set in your user settings only |
nifty.git.issues.tracker |
auto |
Where the Issues section gets its issues: auto (Jira when a Jira site is set, otherwise the repository's host), host, jira, trello or off |
nifty.git.jira.site |
|
Your Jira site, like https://example.atlassian.net |
nifty.git.jira.email |
|
The email of your Jira Cloud account; leave it empty for Jira Data Center |
nifty.git.jira.project |
|
The key of the Jira project whose issues to list, like SHOP; empty lists the issues assigned to you |
nifty.git.trello.board |
|
The Trello board whose cards the Issues section lists: its address or its id |
nifty.git.repositoryGroups |
[] |
Named sets of repositories that open together as tabs; save the open tabs as a group from the tab strip's + menu |
nifty.git.language |
auto |
The language of the panel and messages: auto follows VS Code's display language, or choose en, de, es, fr, ja, pt-br or zh-cn; takes effect after reloading the window |
Git 2.25 or later must be installed and on your PATH.
Install
- VS Code: search for "Nifty Git" in the Extensions view, or install from the Visual Studio Marketplace.
- Cursor, Windsurf, VSCodium, Kiro, Antigravity: install from Open VSX.
Privacy
This extension collects no telemetry and needs no account. The only network calls are the license check against the license server when you enter a key (and once a week afterwards, with a 14-day offline grace period), requests to your repository's own hosting service, your Jira site or Trello when you open the pull request or issue lists or press a button there, and Gravatar if you turn avatars on.
- Nifty Git Graph: Git History & Branch Graph: See your git history as a graph: branches, merges and tags, commit details and diffs, and checkout, merge, rebase, cherry-pick and more from a right-click. No sign-in. (Open VSX)
- Nifty Branches: Clean Up Merged Git Branches: Safely clean up merged, squash-merged, gone and stale git branches, with a preview and one-click restore. (Open VSX)
- Nifty Git Links: Open in GitHub, GitLab & Bitbucket: Open or copy links to files, lines, commits and pull requests on GitHub, GitLab, Bitbucket, Azure DevOps and Gitea. (Open VSX)
- Nifty SVN: Subversion Source Control: Subversion in the Source Control view: changes, changelists, diffs, commit, update, blame and branches, in VS Code, Cursor and more. (Open VSX)
- Nifty Code Metrics: Complexity & Hotspots: Complexity and size for every function in any language, as CodeLens and warnings, plus a hotspots view of the complex files that change most often. (Open VSX)
- Nifty Colors: Swatches & Picker in Every Language: Colour swatches and VS Code's picker in any file: CSS, Tailwind, Flutter, Swift, Android, C# and Unity colours. Convert formats and check WCAG contrast on hover. (Open VSX)
See all 100+ Nifty extensions and web tools at https://getnifty.dev
| |