Git in VSCode with less bloat.
GitLess is a minimal VSCode Git extension. The built-in Git features don't do enough, but other extensions do too much. GitLess strikes a balance, providing a focused set of features for everyday Git workflows.
What GitLess does not do:
- GitLess does not collect telemetry.
- GitLess does not expire extension versions or disable functionality until you update.
- GitLess does not require a separate account, subscription, or cloud service.
- GitLess does not turn your Source Control panel into a full workflow dashboard.
- GitLess does not run heavyweight background services just to show Git history.
Access common commands from the VSCode command palette (Ctrl+Shift+P / Cmd+Shift+P):
| Command | Description |
|---|---|
| GitLess: Copy link to repository | Copy the remote repository URL |
| GitLess: Copy remote file URL | Copy the URL of the current file on the remote |
| GitLess: Copy remote file URL from | Copy the file URL for a specific branch or tag |
| GitLess: Copy remote commit URL | Copy the URL of the current commit |
| GitLess: Copy remote commit URL from | Copy the commit URL from a specific remote |
| GitLess: Copy SHA | Copy the full commit SHA |
| GitLess: Copy short SHA | Copy the short commit SHA |
| GitLess: Open file on remote | Open the current file on the remote |
| GitLess: Open commit on remote | Open the current commit on the remote |
| GitLess: Select Repository | Switch the active repository in multi-repo workspaces |
| GitLess: Search Commits | Search commits by message, author, SHA (short or full), file, or changes |
| GitLess: Compare References | Compare branches, tags, or refs |
GitLess adds a grouped section to the Source Control panel with toggle buttons to switch between views:
- Commits - Browse the commit history with expandable file trees
- Tags - Browse tags and their associated commits
- Branches - View local and remote branches and inspect recent commits
- Remotes - Inspect configured remotes and remote branches
- Stashes - Inspect stashed changes
- Worktrees - View Git worktrees and inspect recent commits
Hover over a commit to reveal inline buttons:
| Button | Action | Alt/Option Action |
|---|---|---|
| Open all changes | Open diffs for all files | Open all changes against working tree |
| Compare | Compare to/from HEAD | Compare working tree to this commit |
| Copy SHA | Copy the full commit SHA | Copy the commit message |
| Open on remote | Open the commit on the web | Copy the remote commit URL to clipboard |
Commit tooltips autolink common references in commit summaries and bodies, including:
- Raw
httpandhttpsURLs - Commit references, including short SHAs (
a05b1ad,1765166), full SHAs, andowner/repo@SHA - GitHub autolinked references like
GH-123,#123, andowner/repo#123 - GitLab crosslinks like
GL-123,!123, andowner/repo!123 - Forgejo and Codeberg references
Provider-specific tooltip links prefer a recognized upstream remote, then origin, then the first recognized remote so forked checkouts can link references to the source repository. Remote open and copy commands still use the command preferred remote, choosing origin first and then the first recognized remote.
Expand a commit to see its files, then hover for inline buttons:
| Button | Action | Alt/Option Action |
|---|---|---|
| Open file at revision | Open the file at this commit | Open the working tree file |
| Open changes | Diff against working file | Open changes with working file |
| Open file on remote | Open the file on the web | Copy the remote file URL |
| Button | Action | Alt/Option Action |
|---|---|---|
| Checkout | Checkout this tag | |
| Compare | Compare to/from HEAD | Compare working tree to this tag |
Right-click on items for additional actions:
- Commits: Copy SHA, Copy short SHA, Copy message, Share > Copy remote commit URL
- Files: Share > Copy link to commit, Copy link to commit at revision, Copy remote file URL, Copy remote file URL at revision
- Tags: Copy tag name, Copy tag message
- Branches: Compare with HEAD, Share > Copy link to repository
- Stashes: Copy SHA, Copy message
- Remotes: Copy link to repository, Open current file on remote
The GitLess Inspect sidebar panel provides:
- File History - View the commit history of the active file
- Line History - View the commit history of selected lines
- Search and Compare - Search commits by message, author, SHA (short or full), file, or changes; compare branches, tags, or refs
GitLess generates correct URLs for:
- GitHub
- GitLab
- Forgejo (including Codeberg)
- Azure DevOps
- Bitbucket
Available settings:
| Setting | Default | Description |
|---|---|---|
gitless.shortShaLength |
7 |
Length of short commit SHAs (5 - 40) |
gitless.repositoryScanMaxDepth |
1 |
Depth used when scanning workspace folders for Git repositories (-1 no limit) |
gitless.views.commits.showBranchComparison |
true |
Show branch comparison in Commits view |
gitless.defaultDateFormat |
null |
Date format (Day.js format tokens) |
gitless.defaultDateStyle |
"relative" |
Date style: relative or absolute |
gitless.views.branches.layout |
"tree" |
Branch view layout: list or tree |
Notes:
gitless.defaultDateFormatuses Day.js format tokens.YYYY-MM-DDrenders2026-04-11.MMM D, YYYYrendersApr 11, 2026.YYYY-MM-DD HH:mmrenders2026-04-11 14:30.nullwill use the default date formatting.
gitless.repositoryScanMaxDepthcontrols how many levels of subdirectories GitLess traverses when scanning workspace folders for Git repositories. Equivalent togit.repositoryScanMaxDepth. For the best multi-repo workspace experience, set bothgit.repositoryScanMaxDepthandgitless.repositoryScanMaxDepthto the same number.
Set custom values in your VS Code settings.json:
pnpm installpnpm run build # Production build
pnpm run build:dev # Development build (with sourcemaps)
pnpm run watch # Watch modepnpm run test # Unit tests (VS Code test host)
pnpm run test:e2e # E2E tests (VS Code test host)pnpm run lint # Check formatting
pnpm run format # Fix formattingLaunch the Extension Development Host by pressing F5 or running "Debug: Start Debugging" from the command palette. This opens a second VSCode window with the extension loaded. After making code changes, run "Developer: Reload Window" in the Extension Development Host to pick up the new build. See .vscode/launch.json for debug configurations.
pnpm run package # Create .vsix filePublishing is fully automated with semantic-release. When commits are pushed to main, semantic-release analyzes the commit messages to determine the next version, generates a changelog, publishes to both the VS Code Marketplace and Open VSX (for VSCodium and other non-Microsoft distributions), and creates a GitHub release.
{ "gitless.defaultDateFormat": "YYYY-MM-DD HH:mm", "gitless.defaultDateStyle": "absolute", "gitless.repositoryScanMaxDepth": 5, "git.repositoryScanMaxDepth": 5, }