Git Diff Viewer
View and navigate your git changes with the built-in diff viewer.
Vertical Tabs includes a built-in diff viewer for reviewing changes directly in the terminal.
Opening the diff pane
Section titled “Opening the diff pane”Press ⇧ Shift + ⌘ Cmd + G to toggle the git diff pane. It slides in alongside the terminal with a side-by-side view of the working copy and its changes.
Press the shortcut again to close it.
File list views
Section titled “File list views”The file list supports two layouts. Switch between them using the toggle at the top of the pane.
Commit view
Section titled “Commit view”Files are split into two groups: Changes (tracked files that are modified, added, or deleted) and Unversioned Files (untracked). Each file row shows the filename followed by a status letter (M, A, D, or U) and includes a checkbox for selecting which files to include in a commit.
This is the default view, used when preparing a commit.
Tree view
Section titled “Tree view”Files are displayed in a directory hierarchy that matches the project structure. Folders expand and collapse to focus on specific parts of the codebase.
Sideview mode
Section titled “Sideview mode”Toggle sideview mode to display all changes in a single scrollable view. Each file gets a collapsible header for expanding or collapsing individual diffs.
Sideview provides a quick overview of everything that changed across the project.
Large generated or accidentally unignored files are protected by preview limits. They still appear in the file list and can be staged, opened, or committed, but sideview may omit their inline preview and automatic line counts may show 0 rather than reading the whole file into memory.
File status badges
Section titled “File status badges”Each file in the list has a color-coded status badge:
| Badge | Color | Meaning |
|---|---|---|
| M | Peach | Modified |
| A | Green | Added |
| D | Red | Deleted |
| U | Grey | Untracked |
Filtering files
Section titled “Filtering files”Use the search box at the top of the file list to filter by file name. Start typing and the list narrows instantly.
Separate diff windows
Section titled “Separate diff windows”Right-click any file and select Open in Window to open the diff in its own full-size window.
A separate window provides more space for large files or for comparing changes side by side with the terminal.
Stage and unstage files
Section titled “Stage and unstage files”Right-click any file in the diff file list to see staging options:
- Stage File adds the file to the git staging area. Appears for any unstaged or untracked file.
- Unstage File removes the file from the staging area. Appears for staged files.
When multiple files are checked, the batch context menu shows Stage N Files and Unstage N Files for quick bulk operations.
Current branch
Section titled “Current branch”The name of the current git branch is shown in the terminal top bar alongside insertion and deletion counts. When multiple worktrees are configured, the branch also appears in the diff pane header as part of the worktree dropdown.
Worktree support
Section titled “Worktree support”If you use git worktrees, a dropdown in the diff header lets you switch between them. Selecting a different worktree shows its changes without altering your terminal’s working directory.
Commit message and file selections are remembered per worktree. Switching between worktrees preserves state.
Git initialization
Section titled “Git initialization”If the current workspace is not a git repository, the diff pane shows an Initialize Repository button. Click it to run git init.
Auto-refresh
Section titled “Auto-refresh”The diff viewer watches for file changes on disk and updates automatically. Save a file in an editor and the diff refreshes on its own.
Refreshes are serialized, so a burst of file changes queues one follow-up refresh instead of starting overlapping git scans.