<bstyle="font-weight: 600">supercharges</b> the Git capabilities built into Visual Studio Code. It helps you to
<bstyle="font-weight: 600">visualize code authorship</b> at a glance via Git blame annotations and code lens,
<bstyle="font-weight: 600">seamlessly navigate and explore</b> Git repositories,
<bstyle="font-weight: 600">gain valuable insights</b> via powerful comparison commands, and so much more.
</p>
</div>
# GitLens
GitLens **supercharges** the Git capabilities built into Visual Studio Code. It helps you to **visualize code authorship** at a glance via Git blame annotations and code lens, **seamlessly navigate and explore** the history of a file or branch, **gain valuable insights** via powerful comparison commands, and so much more.
GitLens is a free, [open-source](https://github.com/eamodio/vscode-gitlens "Open GitLens on GitHub") extension for [Visual Studio Code](https://code.visualstudio.com) created by [Eric Amodio](http://amod.io "Learn more about Eric").
GitLens provides an unobtrusive blame annotation at the end of the current line, a status bar item showing the commit information (author and date, by default) of the current line, code lens showing the most recent commit and # of authors of the file and/or code block, and many commands for exploring commits and histories, comparing and navigating revisions, stash access, repository status, and more. GitLens is also [highly customizable](#extension-settings) to meet your specific needs — find code lens intrusive or the current line blame annotation distracting — no problem, it is easy to [turn them off or change how they behave](#extension-settings).
GitLens simply helps you understand code better. Quickly glimpse into who, why, and when a line or code block was changed. Jump back through history to gain further insights as to how and why the code evolved. Explore the history and evolution of a codebase.
Here are just some of the features that GitLens provides,
- a [*GitLens* explorer](#gitlens-explorer "Jump to the GitLens explorer") to navigate and explore repositories or file histories
- an on-demand [*GitLens Results* view](#gitlens-results-view "Jump to the GitLens Results view") to explore commit searches, visualize comparisions between branches, tags, commits, and more
- Git authorship code lens showing the most recent commit and # of authors to the top of files and/or on code blocks
- an unobtrusive Git blame annotation to the end of the current line
- detailed Git blame information accessible via hovers
- a status bar Git blame annotation showing author and date, by default, about the current line
- many powerful commands for exploring commits and histories, comparing and navigating revisions, stash access, repository status, and more
GitLens is powerful, feature rich, and also [highly customizable](#gitlens-settings "Jump to the GitLens settings docs") to meet your specific needs — find code lens intrusive or the current line blame annotation distracting — no problem, it is quick and easy to turn them off or change how they behave via the built-in *GitLens Settings* editor, a WYSIWYG editor covering many of GitLens' powerful settings. While for more advanced customizations, refer to the [GitLens settings docs](#gitlens-settings "Jump to the GitLens settings docs") and edit your vscode [user settings](https://code.visualstudio.com/docs/getstarted/settings).
>###### Features blame annotations, code lens, status bar details, quick pick menus for navigation and exploration, compare with previous, and more
### Quick Access Settings
## Features
While GitLens is highly customizable and provides many [configuration settings](#extension-settings), here are the most important ones for controlling GitLens' behavior
### GitLens Explorer
A [customizable](#gitlens-explorer-settings "Jump to the GitLens Explorer settings") explorer to navigate and explore repositories or file histories. The GitLens explorer provides two views (modes) — a Repository view and a History view.
- Toolbar provides *Search Commits*, *Switch to Repository View* or *Switch to History View*, and *Refresh* commands
- Quickly switch between views using the *Switch to Repository View* or *Switch to History View* commands
#### Repository view
![GitLens Explorer Repository view](https://raw.githubusercontent.com/eamodio/vscode-gitlens/feature-settings/images/screenshot-gitlens-explorer-repository.png)
The repository view provides a full Git repository explorer, which has the following features,
- **Repository Status**
- Provides the name of the current branch, [optionally](#gitlens-explorer-settings "Jump to the GitLens explorer settings") its working tree status, and its upstream tracking branch and status (if available)
- Provides indicator dots on the repository icon which denote the following:
- *None* - up-to-date with the upstream
- *Green* - ahead of the upstream
- *Red* - behind the upstream
- *Yellow* - both ahead of and behind the upstream
- Provides additional upstream status nodes, if the current branch is tracking a remote branch and,
- is behind the upstream — quickly see and explore the specific commits behind the upstream (i.e. commits that haven't been pulled)
- is ahead of the upstream — quickly see and explore the specific commits ahead of the upstream (i.e. commits that haven't been pushed)
- **Changed Files** node — provides a at-a-glance view of all "working" changes
- Expands to a file-based view of all changed files in the working tree ([optionally](#gitlens-explorer-settings "Jump to the GitLens explorer settings")) and/or all files in all commits ahead of the upstream
- Provides a context menu with *Open Repository in Remote*, and *Refresh* commands
- **Branches**— lists the local branches
- Indicates which branch is the current branch and [optionally](#gitlens-explorer-settings "Jump to the GitLens explorer settings") shows the remote tracking branch
- Context menu provides *Open Branches in Remote*, and *Refresh* commands
- Branches expand to show its revision (commit) history
- Provides indicator dots on each branch icon which denote the following:
- *None*— no upstream or up-to-date with the upstream
- *Green*— ahead of the upstream
- *Red*— behind the upstream
- *Yellow*— both ahead of and behind the upstream
- Context menus for each branch provide
- *Open Branch in Remote* (if available), *Compare with Remote* (if available), *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected* (when available), *Compare Selected Ancestor with Working Tree* (when available), *Select for Compare*, *Open Directory Compare with Working Tree*, *Checkout Branch (via Terminal)*, *Merge Branch (via Terminal)*, *Rebase (Interactive) Branch (via Terminal)*, *Rebase (Interactive) Branch to Remote (via Terminal)*, *Squash Branch into Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Delete Branch (via Terminal)*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Revisions (commits) expand to show the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Context menus for each revision (commit) provide
- *Open Commit in Remote* (if available), *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected* (when available), *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Context menus for each changed file provide
- *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- **Remotes**— lists the remotes
- Indicates the direction of the remote (fetch, push, both), remote service (if applicable), and repository path
- Context menu provides a *Refresh* command
- Remotes expands show its list of branches
- Context menus for each remote provide
- *Open Branches in Remote*, *Open Repository in Remote*, *Remove Remote (via Terminal)*, and *Refresh* commands
- Branches expand to show its revision (commit) history
- See the *Branches expand* section in the **Branches** above for more details
- **Stashes**— lists the stashed changes
- Context menu provides *Stash Changes*, and *Refresh* commands
- Stashes expand to show the set of files stashed, complete with status indicators for adds, changes, renames, and deletes
- Context menus for each stash provide
- *Apply Stashed Changes* (confirmation required), *Delete Stashed Changes* (confirmation required), *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit Message to Clipboard*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected* (when available), *Select for Compare*, and *Refresh* commands
- Context menus for each stashed file provide
- *Apply Changes*, *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote* (if available), and *Show File History* commands
- **Tags**— lists the tags
- Context menu provides a *Refresh* command
- Tags expand to show its revision (commit) history
- Context menus for each tag provide
- *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Open Directory Compare with Working Tree*, *Delete Tag (via Terminal)*, and *Refresh* commands
- Revisions (commits) expand to show the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- See the *Revisions (commits) expand* section in the **Branches** above for more details
### History view
![GitLens Explorer History view](https://raw.githubusercontent.com/eamodio/vscode-gitlens/feature-settings/images/screenshot-gitlens-explorer-history.png)
The history view provides the revision history of the active file, which has the following features,
- Automatically updates to track the active editor
- Context menu provides *Open File*, *Open File in Remote* (if available), and *Refresh* commands
- Context menus for each revision (commit) provides
- *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote* (if available), *Open Revision in Remote* (if available), *Apply Changes*, and *Show Commit File Details* commands
An on-demand, [customizable](#gitlens-results-settings "Jump to the GitLens Results settings") view to explore commit searches, visualize comparisions between branches, tags, commits, and more
|Name | Description
|-----|------------
|`gitlens.blame.line.enabled`|Specifies whether or not to provide a blame annotation for the current line, by default<br/>Use the *Toggle Line Blame Annotations* command (`gitlens.toggleLineBlame`) to toggle the annotations on and off for the current session
|`gitlens.codeLens.enabled`|Specifies whether or not to provide any Git code lens, by default<br/>Use the *Toggle Git Code Lens* command (`gitlens.toggleCodeLens`) to toggle the Git code lens on and off for the current session
|`gitlens.gitExplorer.enabled`|Specifies whether or not to show the **GitLens** view
|`gitlens.statusBar.enabled`|Specifies whether or not to provide blame information on the status bar
|`gitlens.keymap`|Specifies the keymap to use for GitLens shortcut keys<br/>`standard` - adds a standard set of shortcut keys<br/>`chorded` - adds a chorded set of shortcut keys that all start with `Ctrl+Shift+G` (`⌥⌘G` on macOS)<br/>`none` - no shortcut keys will be added
## Features
- Provides semi-persistent results for commit search, file history, and commit operations
- Accessible via the following: *Show Commit Search* command (`gitlens.showCommitSearch`), *Show File History* command (`gitlens.showQuickFileHistory`), and *Show Commit Details* command (`gitlens.showQuickCommitDetails`)
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Provides semi-persistent results for revision comparison operations
- Accessible via the following: *Compare with Index (HEAD)* command (`gitlens.explorers.compareWithHead`), *Compare with Remote* command (`gitlens.explorers.compareWithRemote`), *Compare with Working Tree* command (`gitlens.explorers.compareWithWorking`), *Compare with Selected* command (`gitlens.explorers.compareWithSelected`), and *Compare Selected Ancestor with Working Tree* command (`gitlens.explorers.compareSelectedAncestorWithWorking`)
- **Commits** node — provides a list of the commits between the compared revisions (branches or commits)
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- **Changed Files** node — provides a list of all the files changed between the compared revisions (branches or commits)
- Expands to a file-based view of all changed files
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Provides a context menu with *Open Directory Compare* and *Refresh* commands
- Provides toolbar commands to *Search Commits*, *Keep Results*, *Refresh*, *Show Files in Automatic View* or *Show Files in List View* or *Show Files in Tree View*, and *Close*
### Git Blame Annotations
- Adds an unobtrusive, highly [customizable](#line-blame-annotation-settings) and [themable](#themable-colors), **Git blame annotation** to the end of the current line ([optional](#line-blame-annotation-settings), on by default)
@ -138,76 +245,6 @@ While GitLens is highly customizable and provides many [configuration settings](
### Navigate and Explore
- Adds a [customizable](#gitlens-view-settings) **GitLens** view to the Explorer activity
- **Repository View** - provides a full repository explorer
- **Repository Status** node — provides the status of the repository
- Provides the name of the current branch, [optionally](#gitlens-view-settings) its working tree status, and its upstream tracking branch and status (if available)
- Provides indicator dots on the repository icon which denote the following:
- *None* - up-to-date with the upstream
- *Green* - ahead of the upstream
- *Red* - behind the upstream
- *Yellow* - both ahead of and behind the upstream
- Provides additional upstream status nodes, if the current branch is tracking a remote branch and
- is behind the upstream — quickly see and explore the specific commits behind the upstream (i.e. commits that haven't been pulled)
- is ahead of the upstream — quickly see and explore the specific commits ahead of the upstream (i.e. commits that haven't been pushed)
- **Changed Files** node — provides a at-a-glance view of all "working" changes
- Expands to a file-based view of all changed files in the working tree ([optionally](#gitlens-view-settings)) and/or all files in all commits ahead of the upstream
- Provides a context menu with *Open Repository in Remote*, and *Refresh* commands
- **Branches** node — provides a list of the local branches
- Indicates which branch is the current branch and [optionally](#gitlens-view-settings) shows the remote tracking branch
- Expand each branch to easily see its revision (commit) history
- Provides indicator dots on each branch icon which denote the following:
- *None* - no upstream or up-to-date with the upstream
- *Green* - ahead of the upstream
- *Red* - behind the upstream
- *Yellow* - both ahead of and behind the upstream
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Provides a context menu on each branch with *Open Branch in Remote*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Remote*, *Compare with Selected*, *Compare Selected Ancestor with Working Tree*, *Select for Compare*, *Open Directory Compare with Working Tree*, *Checkout Branch (via Terminal)*, *Merge Branch (via Terminal)*, *Rebase (Interactive) Branch (via Terminal)*, *Rebase (Interactive) Branch to Remote (via Terminal)*, *Squash Branch into Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Delete Branch (via Terminal)*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu with *Open Branches in Remote*, and *Refresh* commands
- **Remotes** node — provides a list of remotes
- Indicates the direction of the remote (fetch, push, both), remote service (if applicable), and repository path
- Expand each remote to see its list of branches
- Expand each branch to easily see its revision (commit) history
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*,*Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, *Show File History*, and *Show Commit File Details* commands
- Provides a context menu on each remote branch with *Open Branch in Remote*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Compare Selected Ancestor with Working Tree*, *Select for Compare*, *Open Directory Compare with Working Tree*, *Checkout Branch (via Terminal)*, *Merge Branch (via Terminal)*, *Rebase (Interactive) Branch (via Terminal)*, *Squash Branch into Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Delete Branch (via Terminal)*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each remote with *Open Branches in Remote*, *Open Repository in Remote*, *Remove Remote (via Terminal)*, and *Refresh* commands
- Provides a context menu with a *Refresh* command
- **Stashes** node — provides a list of stashed changes
- Expand each stash to quickly see the set of files stashed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each stash with *Apply Stashed Changes* (confirmation required), *Delete Stashed Changes* (confirmation required), *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit Message to Clipboard*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, and *Refresh* commands
- Provides a context menu on each stashed file with *Apply Changes*, *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, and *Show File History* commands
- Provides a context menu with *Stash Changes*, and *Refresh* commands
- **Tags** node — provides a list of tags
- Expand each tag to easily see its revision (commit) history
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Provides a context menu on each tag with *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Open Directory Compare with Working Tree*, *Delete Tag (via Terminal)*, and *Refresh* commands
- Provides a context menu with a *Refresh* command
- **History View** - provides the revision history of the active file
![GitLens History view](https://raw.githubusercontent.com/eamodio/vscode-gitlens/master/images/screenshot-git-custom-view-history.png)
- Automatically updates to track the active editor
- Provides a context menu with *Open File*, *Open File in Remote*, and *Refresh* commands
- Provides a context menu on each revision (commit) with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Quickly switch between views using the *Switch to Repository View* or *Switch to History View* commands
- Provides toolbar commands to *Search Commits*, *Switch to Repository View* or *Switch to History View*, and *Refresh*
- Adds a *Search Commits* command (`gitlens.showCommitSearch`) with a shortcut of `alt+/` to search for commits by message, author, file(s), commit id, or code changes
- Use `<message>` to search for commits with messages that match `<message>` -- See [Git docs](https://git-scm.com/docs/git-log#git-log---grepltpatterngt)
- Use `@<pattern>` to search for commits with authors that match `<pattern>` -- See [Git docs](https://git-scm.com/docs/git-log#git-log---authorltpatterngt)
@ -217,26 +254,6 @@ While GitLens is highly customizable and provides many [configuration settings](
- Use `=<string>` to search for commits with differences that change the number of occurrences of the specified string (i.e. addition/deletion) in a file -- See [Git docs](https://git-scm.com/docs/git-log#git-log--Sltstringgt)
- Provides a *Show in Results* option to show the search results in the **GitLens Results** view
- Adds an on-demand, [customizable](#gitlens-results-view-settings) **GitLens Results** view to the Explorer activity
- Provides semi-persistent results for commit search, file history, and commit operations
- Accessible via the following: *Show Commit Search* command (`gitlens.showCommitSearch`), *Show File History* command (`gitlens.showQuickFileHistory`), and *Show Commit Details* command (`gitlens.showQuickCommitDetails`)
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Provides semi-persistent results for revision comparison operations
- Accessible via the following: *Compare with Index (HEAD)* command (`gitlens.explorers.compareWithHead`), *Compare with Remote* command (`gitlens.explorers.compareWithRemote`), *Compare with Working Tree* command (`gitlens.explorers.compareWithWorking`), *Compare with Selected* command (`gitlens.explorers.compareWithSelected`), and *Compare Selected Ancestor with Working Tree* command (`gitlens.explorers.compareSelectedAncestorWithWorking`)
- **Commits** node — provides a list of the commits between the compared revisions (branches or commits)
- Expand each revision (commit) to quickly see the set of files changed, complete with status indicators for adds, changes, renames, and deletes
- Provides a context menu on each revision (commit) with *Open Commit in Remote*, *Open All Changes*, *Open All Changes with Working Tree*, *Open Files*, *Open Revisions*, *Copy Commit ID to Clipboard*, *Copy Commit Message to Clipboard*, *Show Commit Details*, *Compare with Index (HEAD)*, *Compare with Working Tree*, *Compare with Selected*, *Select for Compare*, *Cherry Pick Commit (via Terminal)*, *Revert Commit (via Terminal)*, *Rebase to Commit (via Terminal)*, *Reset to Commit (via Terminal)*, *Create Branch (via Terminal)...*, *Create Tag (via Terminal)...*, and *Refresh* commands
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- **Changed Files** node — provides a list of all the files changed between the compared revisions (branches or commits)
- Expands to a file-based view of all changed files
- Provides a context menu on each changed file with *Open Changes*, *Open Changes with Working File*, *Open File*, *Open Revision*, *Open File in Remote*, *Open Revision in Remote*, *Apply Changes*, and *Show Commit File Details* commands
- Provides a context menu with *Open Directory Compare* and *Refresh* commands
- Provides toolbar commands to *Search Commits*, *Keep Results*, *Refresh*, *Show Files in Automatic View* or *Show Files in List View* or *Show Files in Tree View*, and *Close*
- Adds commands to open files, commits, branches, and the repository in the supported remote services, **BitBucket, GitHub, GitLab, and Visual Studio Team Services** or a [**user-defined** remote services](#custom-remotes-settings) — only available if a Git upstream service is configured in the repository
- Also supports [remote services with custom domains](#custom-remotes-settings), such as **BitBucket, Bitbucket Server (previously called Stash), GitHub, GitHub Enterprise, GitLab**
- *Open Branches in Remote* command (`gitlens.openBranchesInRemote`) — opens the branches in the supported remote service
@ -377,7 +394,7 @@ GitLens defines a set of themable colors which can be provided by vscode themes
|`gitlens.lineHighlightBackgroundColor`|Specifies the background color of the associated line highlights in blame annotations
|`gitlens.lineHighlightOverviewRulerColor`|Specifies the overview ruler color of the associated line highlights in blame annotations
## Extension Settings
## GitLens Settings
GitLens is highly customizable and provides many configuration settings to allow the personalization of almost all features
@ -392,6 +409,40 @@ GitLens is highly customizable and provides many configuration settings to allow
|`gitlens.keymap`|Specifies the keymap to use for GitLens shortcut keys<br/>`standard` - adds a standard set of shortcut keys<br/>`chorded` - adds a chorded set of shortcut keys that all start with `Ctrl+Shift+G` (`⌥⌘G` on macOS)<br/>`none` - no shortcut keys will be added
|`gitlens.outputLevel`|Specifies how much (if any) output will be sent to the GitLens output channel
### GitLens Explorer Settings
|Name | Description
|-----|------------
|`gitlens.gitExplorer.enabled`|Specifies whether or not to show the **GitLens** view"
|`gitlens.gitExplorer.view`|Specifies the starting view (mode) of the **GitLens** view<br/>`auto` - shows the last selected view, defaults to `repository`<br/>`history` - shows the commit history of the active file<br/>`repository` - shows a repository explorer"
|`gitlens.gitExplorer.autoRefresh`|Specifies whether or not to automatically refresh the **GitLens** view when the repository or the file system changes
|`gitlens.gitExplorer.files.layout`|Specifies how the **GitLens** view will display files<br/>`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.gitExplorer.files.threshold` setting and the number of files at each nesting level<br/>`list` - displays files as a list<br/>`tree` - displays files as a tree
|`gitlens.gitExplorer.files.compact`|Specifies whether or not to compact (flatten) unnecessary file nesting in the **GitLens** view<br/>Only applies when displaying files as a `tree` or `auto`
|`gitlens.gitExplorer.files.threshold`|Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the **GitLens** view<br/>Only applies when displaying files as `auto`
|`gitlens.gitExplorer.commitFormat`|Specifies the format of committed changes in the **GitLens** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.gitExplorer.commitFileFormat`|Specifies the format of a committed file in the **GitLens** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.gitExplorer.gravatars`|Specifies whether or not to show gravatar images instead of commit (or status) icons in the **GitLens** view
|`gitlens.gitExplorer.includeWorkingTree`|Specifies whether or not to include working tree files inside the `Repository Status` node of the **GitLens** view
|`gitlens.gitExplorer.showTrackingBranch`|Specifies whether or not to show the tracking branch when displaying local branches in the **GitLens** view"
|`gitlens.gitExplorer.stashFormat`|Specifies the format of stashed changes in the **GitLens** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.gitExplorer.stashFileFormat`|Specifies the format of a stashed file in the **GitLens** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.gitExplorer.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path<br/>${working} - optional indicator if the file is uncommitted
### GitLens Results Settings
|Name | Description
|-----|------------
|`gitlens.resultsExplorer.files.layout`|Specifies how the **GitLens Results** view will display files<br/>`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.resultsExplorer.files.threshold` setting and the number of files at each nesting level<br/>`list` - displays files as a list<br/>`tree` - displays files as a tree
|`gitlens.resultsExplorer.files.compact`|Specifies whether or not to compact (flatten) unnecessary file nesting in the **GitLens Results** view<br/>Only applies when displaying files as a `tree` or `auto`
|`gitlens.resultsExplorer.files.threshold`|Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the **GitLens Results** view<br/>Only applies when displaying files as `auto`
|`gitlens.resultsExplorer.commitFormat`|Specifies the format of committed changes in the **GitLens Results** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.resultsExplorer.commitFileFormat`|Specifies the format of a committed file in the **GitLens Results** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.resultsExplorer.gravatars`|Specifies whether or not to show gravatar images instead of commit (or status) icons in the **GitLens Results** view
|`gitlens.resultsExplorer.showTrackingBranch`|Specifies whether or not to show the tracking branch when displaying local branches in the **GitLens Results** view"
|`gitlens.resultsExplorer.stashFormat`|Specifies the format of stashed changes in the **GitLens Results** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.resultsExplorer.stashFileFormat`|Specifies the format of a stashed file in the **GitLens Results** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.resultsExplorer.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens Results** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path<br/>${working} - optional indicator if the file is uncommitted
### Blame Settings
|Name | Description
@ -454,40 +505,6 @@ GitLens is highly customizable and provides many configuration settings to allow
|`gitlens.codeLens.scopesByLanguage`|Specifies where Git code lens will be shown in the document for the specified languages
|`gitlens.codeLens.symbolScopes`|Specifies a set of document symbols where Git code lens will or will not be shown in the document<br/>Prefix with `!` to not show Git code lens for the symbol<br/>Must be a member of `SymbolKind`
### GitLens View Settings
|Name | Description
|-----|------------
|`gitlens.gitExplorer.enabled`|Specifies whether or not to show the **GitLens** view"
|`gitlens.gitExplorer.view`|Specifies the starting view (mode) of the **GitLens** view<br/>`auto` - shows the last selected view, defaults to `repository`<br/>`history` - shows the commit history of the active file<br/>`repository` - shows a repository explorer"
|`gitlens.gitExplorer.autoRefresh`|Specifies whether or not to automatically refresh the **GitLens** view when the repository or the file system changes
|`gitlens.gitExplorer.files.layout`|Specifies how the **GitLens** view will display files<br/>`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.gitExplorer.files.threshold` setting and the number of files at each nesting level<br/>`list` - displays files as a list<br/>`tree` - displays files as a tree
|`gitlens.gitExplorer.files.compact`|Specifies whether or not to compact (flatten) unnecessary file nesting in the **GitLens** view<br/>Only applies when displaying files as a `tree` or `auto`
|`gitlens.gitExplorer.files.threshold`|Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the **GitLens** view<br/>Only applies when displaying files as `auto`
|`gitlens.gitExplorer.commitFormat`|Specifies the format of committed changes in the **GitLens** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.gitExplorer.commitFileFormat`|Specifies the format of a committed file in the **GitLens** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.gitExplorer.gravatars`|Specifies whether or not to show gravatar images instead of commit (or status) icons in the **GitLens** view
|`gitlens.gitExplorer.includeWorkingTree`|Specifies whether or not to include working tree files inside the `Repository Status` node of the **GitLens** view
|`gitlens.gitExplorer.showTrackingBranch`|Specifies whether or not to show the tracking branch when displaying local branches in the **GitLens** view"
|`gitlens.gitExplorer.stashFormat`|Specifies the format of stashed changes in the **GitLens** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.gitExplorer.stashFileFormat`|Specifies the format of a stashed file in the **GitLens** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.gitExplorer.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path<br/>${working} - optional indicator if the file is uncommitted
### GitLens Results View Settings
|Name | Description
|-----|------------
|`gitlens.resultsExplorer.files.layout`|Specifies how the **GitLens Results** view will display files<br/>`auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.resultsExplorer.files.threshold` setting and the number of files at each nesting level<br/>`list` - displays files as a list<br/>`tree` - displays files as a tree
|`gitlens.resultsExplorer.files.compact`|Specifies whether or not to compact (flatten) unnecessary file nesting in the **GitLens Results** view<br/>Only applies when displaying files as a `tree` or `auto`
|`gitlens.resultsExplorer.files.threshold`|Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the **GitLens Results** view<br/>Only applies when displaying files as `auto`
|`gitlens.resultsExplorer.commitFormat`|Specifies the format of committed changes in the **GitLens Results** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.resultsExplorer.commitFileFormat`|Specifies the format of a committed file in the **GitLens Results** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.resultsExplorer.gravatars`|Specifies whether or not to show gravatar images instead of commit (or status) icons in the **GitLens Results** view
|`gitlens.resultsExplorer.showTrackingBranch`|Specifies whether or not to show the tracking branch when displaying local branches in the **GitLens Results** view"
|`gitlens.resultsExplorer.stashFormat`|Specifies the format of stashed changes in the **GitLens Results** view<br/>Available tokens<br/> ${id} - commit id<br/> ${author} - commit author<br/> ${message} - commit message<br/> ${ago} - relative commit date (e.g. 1 day ago)<br/> ${date} - formatted commit date (format specified by `gitlens.statusBar.dateFormat`)<br/> ${authorAgo} - commit author, relative commit date<br/>See https://github.com/eamodio/vscode-gitlens/wiki/Advanced-Formatting for advanced formatting
|`gitlens.resultsExplorer.stashFileFormat`|Specifies the format of a stashed file in the **GitLens Results** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path
|`gitlens.resultsExplorer.statusFileFormat`|Specifies the format of the status of a working or committed file in the **GitLens Results** view<br/>Available tokens<br/> ${directory} - directory name<br/> ${file} - file name<br/> ${filePath} - formatted file name and path<br/> ${path} - full file path<br/>${working} - optional indicator if the file is uncommitted
"description":"Specifies whether or not to automatically refresh the `GitLens` view when the repository or the file system changes",
"description":"Specifies whether or not to automatically refresh the `GitLens` explorer when the repository or the file system changes",
"scope":"window"
},
"gitlens.gitExplorer.enabled":{
"type":"boolean",
"default":true,
"description":"Specifies whether or not to show the `GitLens` view",
"description":"Specifies whether or not to show the `GitLens` explorer",
"scope":"window"
},
"gitlens.gitExplorer.files.compact":{
"type":"boolean",
"default":true,
"description":"Specifies whether or not to compact (flatten) unnecessary file nesting in the `GitLens` view\nOnly applies when displaying files as a `tree` or `auto`",
"description":"Specifies whether or not to compact (flatten) unnecessary file nesting in the `GitLens` explorer\nOnly applies when displaying files as a `tree` or `auto`",
"scope":"window"
},
"gitlens.gitExplorer.files.layout":{
@ -423,25 +423,25 @@
"list",
"tree"
],
"description":"Specifies how the `GitLens` view will display files\n `auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.gitExplorer.files.threshold` setting and the number of files at each nesting level\n `list` - displays files as a list\n `tree` - displays files as a tree",
"description":"Specifies how the `GitLens` explorer will display files\n `auto` - automatically switches between displaying files as a `tree` or `list` based on the `gitlens.gitExplorer.files.threshold` setting and the number of files at each nesting level\n `list` - displays files as a list\n `tree` - displays files as a tree",
"scope":"window"
},
"gitlens.gitExplorer.files.threshold":{
"type":"number",
"default":5,
"description":"Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the `GitLens` view\nOnly applies when displaying files as `auto`",
"description":"Specifies when to switch between displaying files as a `tree` or `list` based on the number of files in a nesting level in the `GitLens` explorer\nOnly applies when displaying files as `auto`",
"scope":"window"
},
"gitlens.gitExplorer.includeWorkingTree":{
"type":"boolean",
"default":true,
"description":"Specifies whether or not to include working tree files inside the `Repository Status` node of the `GitLens` view",
"description":"Specifies whether or not to include working tree files inside the `Repository Status` node of the `GitLens` explorer",
"scope":"window"
},
"gitlens.gitExplorer.showTrackingBranch":{
"type":"boolean",
"default":true,
"description":"Specifies whether or not to show the tracking branch when displaying local branches in the `GitLens` view",
"description":"Specifies whether or not to show the tracking branch when displaying local branches in the `GitLens` explorer",
"scope":"window"
},
"gitlens.gitExplorer.view":{
@ -452,7 +452,7 @@
"history",
"repository"
],
"description":"Specifies the starting view (mode) of the `GitLens` view\n `auto` - shows the last selected view, defaults to `repository`\n `history` - shows the commit history of the active file\n `repository` - shows a repository explorer",
"description":"Specifies the starting view (mode) of the `GitLens` explorer\n `auto` - shows the last selected view, defaults to `repository`\n `history` - shows the commit history of the active file\n `repository` - shows a repository explorer",
<pclass="page-header__subtitle">For advanced customizations open and edit
<pclass="page-header__subtitle">For advanced customizations refer to the pan class="p"><atitlen class="o">="See the GitLens settings docs"href="https://github.com/eamodio/vscode-gitlens/tree/feature-settings#gitlens-settings">GitLens settings docs</a>and edit your
<aclass="command"title="Open User Settings"href="command:workbench.action.openGlobalSettings">User Settings</a>
<pclass="setting__hint hidden"data-visibility="gitExplorer.files.layout =auto">Chooses the best layout based on the number of files at each nesting level</p>
<imgclass="image__preview hidden"src="{{root}}/images/settings/gitlens-explorer-repository.png"data-visibility="gitExplorer.enabled & gitExplorer.view !history & gitExplorer.files.layout !tree"/>
<imgclass="image__preview hidden"src="{{root}}/images/settings/gitlens-explorer-repository-tree-compact.png"data-visibility="gitExplorer.enabled & gitExplorer.view !history & gitExplorer.files.layout =tree & gitExplorer.files.compact"/>
<imgclass="image__preview hidden"src="{{root}}/images/settings/gitlens-explorer-repository-tree.png"data-visibility="gitExplorer.enabled & gitExplorer.view !history & gitExplorer.files.layout =tree & gitExplorer.files.compact =false"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/gitlens-explorer-repository-avatars.png"data-visibility="gitExplorer.enabled & gitExplorer.view !history & explorers.avatars =true"/>
<imgclass="image__preview hidden"src="{{root}}/images/settings/gitlens-explorer-history.png"data-visibility="gitExplorer.enabled & gitExplorer.view =history"/>
<</span>imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/gitlens-explorer-history-avatars.png";data-visibility="gitExplorer.enabled & gitExplorer.view =history & explorers.avatars =true"/>
</div>
<pclass="settings-group__hint">
<iclass="icon icon--lg icon__info"></i>
For more advanced customizations open <aclass="command"title="Open User Settings"href="command:workbench.action.openGlobalSettings">User Settings</a> and search for <b><i>gitlens.gitExplorer</i></b>
For more advanced customizations open <aclass="command"title="Open User Settings"href="command:workbench.action.openGlobalSettings">User Settings</a> and search for <b><i>gitlens.gitExplorer</i></b> or <b><i>gitlens.explorers</i></b>
<pclass="section__title-hint">Adds an on-demand GitLens Results view to explore commit searches, visualize comparisions between branches, tags, commits, and more</p>
<imgclass="image__preview hidden"src="{{root}}/images/settings/gitlens-results-tree-compact.png"data-visibility="resultsExplorer.files.layout =tree & resultsExplorer.files.compact"/>
<imgclass="image__preview hidden"src="{{root}}/images/settings/gitlens-results-tree.png"data-visibility="resultsExplorer.files.layout =tree & resultsExplorer.files.compact =false"/>
For more advanced customizations open <aclass="command"title="Open User Settings"href="command:workbench.action.openGlobalSettings">User Settings</a> and search for <b><i>gitlens.resultsExplorer</i></b> or <b><i>gitlens.explorers</i></b>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-file-recent+authors.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled & codeLens.authors.enabled & codeLens.scopes +document"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-file-recent.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled & codeLens.authors.enabled =false & codeLens.scopes +document"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-file-authors.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled =false & codeLens.authors.enabled & codeLens.scopes +document"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-containers-recent+authors.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled & codeLens.authors.enabled & codeLens.scopes +containers"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-containers-recent.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled & codeLens.authors.enabled =false & codeLens.scopes +containers"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-containers-authors.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled =false & codeLens.authors.enabled & codeLens.scopes +containers"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-blocks-recent+authors.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled & codeLens.authors.enabled & codeLens.scopes +blocks"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-blocks-recent.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled & codeLens.authors.enabled =false & codeLens.scopes +blocks"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/code-lens-blocks-authors.png"data-visibility="codeLens.enabled & codeLens.recentChange.enabled =false & codeLens.authors.enabled & codeLens.scopes +blocks"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-avatars.png"data-visibility="blame.avatars & blame.compact =false"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-avatars-compact.png"data-visibility="blame.avatars & blame.compact"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-highlight-gutter.png"data-visibility="blame.highlight.enabled & blame.highlight.locations +gutter"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-highlight-line.png"data-visibility="blame.highlight.enabled & blame.highlight.locations +line"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-highlight-scrollbar.png"data-visibility="blame.highlight.enabled & blame.highlight.locations +overviewRuler"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-heatmap-left.png"data-visibility="blame.heatmap.enabled & blame.heatmap.location =left"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/blame-heatmap-right.png"data-visibility="blame.heatmap.enabled & blame.heatmap.location =right"/>
<imgclass="image__preview hidden"src="{{root}}/images/settings/hovers-currentLine-line.png"data-visibility="currentLine.enabled =false & hovers.currentLine.over =annotation"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-blame.png"data-visibility="currentLine.enabled & hovers.currentLine.over =line"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-details+changes.png"data-visibility="hovers.currentLine.over =line & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details & hovers.currentLine.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-details+changes.png"data-visibility="currentLine.enabled =false & hovers.currentLine.over =annotation & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details & hovers.currentLine.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-details.png"data-visibility="hovers.currentLine.over =line & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details & hovers.currentLine.changes =false"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-details.png"data-visibility="currentLine.enabled =false & hovers.currentLine.over =annotation & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details & hovers.currentLine.changes =false"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-changes.png"data-visibility="hovers.currentLine.over =line & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details =false & hovers.currentLine.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-line-changes.png"data-visibility="currentLine.enabled =false & hovers.currentLine.over =annotation & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details =false & hovers.currentLine.changes"/>
<imgclass="image__preview hidden"src="{{root}}/images/settings/hovers-currentLine-annotation.png"data-visibility="currentLine.enabled & hovers.currentLine.over =annotation"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-annotation-details+changes.png"data-visibility="currentLine.enabled & hovers.currentLine.over =annotation & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details & hovers.currentLine.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-annotation-details.png"data-visibility="currentLine.enabled & hovers.currentLine.over =annotation & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details & hovers.currentLine.changes =false"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-currentLine-annotation-changes.png"data-visibility="currentLine.enabled & hovers.currentLine.over =annotation & hovers.enabled & hovers.currentLine.enabled & hovers.currentLine.details =false & hovers.currentLine.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-annotations-details+changes.png"data-visibility="hovers.enabled & hovers.annotations.enabled & hovers.annotations.details & hovers.annotations.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-annotations-details.png"data-visibility="hovers.enabled & hovers.annotations.enabled & hovers.annotations.details & hovers.annotations.changes =false"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-annotations-changes.png"data-visibility="hovers.enabled & hovers.annotations.enabled & hovers.annotations.details =false & hovers.annotations.changes"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/hovers-annotations-heatmap.png"data-visibility="blame.heatmap.enabled & blame.heatmap.location =right"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/status-bar-left.png"data-visibility="statusBar.enabled & statusBar.alignment =left"/>
<imgclass="image__preview--overlay hidden"src="{{root}}/images/settings/status-bar-right.png"data-visibility="statusBar.enabled & statusBar.alignment =right"/>
<atitle="Open GitLens on GitHub"href="https://github.com/eamodio/vscode-gitlens">open-source</a> extension for Visual Studio Code created by
<atitle="Learn more about Eric"
<aclass="bold" title="Open GitLens on GitHub"href="https://github.com/eamodio/vscode-gitlens">open-source</a> extension for Visual Studio Code created by
<aclass="bold" title="Learn more about Eric"
href="http://amod.io">Eric Amodio</a>.
</p>
<pclass="mb-2">
<p>
GitLens simply helps you understand code better. Quickly glimpse into who, why, and when a line or code block was changed.
Jump back through history to gain further insights as to how and why the code evolved. Explore
the history and evolution of a codebase. Dive in and see how GitLens can help!
the history and evolution of a codebase. Dive right in and see how GitLens can help!
</p>
</div>
<divclass="section-group-section">
<h2>Features</h2>
<p>Here are just some of the features that GitLens provides
<p>Here are just some of the features that GitLens provides,
<ulclass="features-list">
<li>Adds a GitLens view to the Explorer activity to explore repositories or file histories</li>
<li>Adds Git authorship code lens to the top of the file and on code blocks</li>
<li>Adds an unobtrusive Git blame annotation to the end of the current line</li>
<li>Adds detailed Git blame information accessible via hovers</li>
<li>Adds a Git blame annotation about the current line to the status bar</li>
<li>Adds many powerful commands for exploring commits and histories, comparing and navigating
revisions, stash access, repository status, and more</li>
<li>a <i>GitLens</i> explorer to navigate and explore repositories or file histories</li>
<li>an on-demand <i>GitLens Results</i> view to explore commit searches, visualize comparisions between branches, tags, or commits, and more</li>
<li>Git authorship code lens showing the most recent commit and # of authors to the top of files and/or on code blocks</li>
<li>an unobtrusive Git blame annotation to the end of the current line</li>
<li>detailed Git blame information accessible via hovers</li>
<li>a status bar Git blame annotation showing author and date, by default, about the current line</li>
class="p"><class="nt">liclass="p">>many powerful commands for exploring commits and histories, comparing and navigating revisions, stash access, repository status, and more</li>
</ul>
</p>
<pclass="mb-2">GitLens is powerful, feature rich, and highly customizable to meet your specific needs, so please
<pclass="mb-2">GitLens is powerful, feature rich, and highly customizable to meet your specific needs
— find code lens intrusive or the current line blame annotation distracting —
no problem, it is quick and easy to turn them off or change how they behave via the built-in <atitle="Open GitLens Settings"href="command:gitlens.showSettingsPage">GitLens Settings</a> editor,
a WYSIWYG editor covering many of GitLens' powerful settings.
While for more advanced customizations, refer to the <aclass="command"title="Open the GitLens settings docs"href="https://github.com/eamodio/vscode-gitlens/tree/feature-settings#gitlens-settings">GitLens settings docs</a>
and edit your <aclass="command"title="Open User Settings"href="command:workbench.action.openGlobalSettings">User Settings</a>.