VS Code Extensions
Git Blame Column

Git Blame Column

by TaoKun

An IDE-style Git blame column with integrated Smart Git commit and history workflows.

Downloads

16

Rating

(0)

Version

0.0.3

Last updated

Aug 15, 2026

A VS Code-compatible extension that provides an IDE-style Git blame column, a CLion-style Git commit panel, and a Smart Git Log graph for VS Code and Trae remote workspaces.

0.0.3 Highlights

  • Reworked the Smart Git: Commit view around a compact changed-file tree, persistent selection, repository and branch controls, Git operation recovery, and an in-panel commit message editor.
  • Reduced a multi-commit context menu to one Squash Commits action. The squash message is edited and validated in a focused in-panel dialog instead of a temporary editor file and a second confirmation prompt.
  • Added paged history loading and automatic refresh from the built-in Git extension so new commits remain visible without reopening Smart Git Log.
  • Made Smart Git Log and Smart Git Commit responsive when the primary side bar reduces the available editor or panel width. Toolbars wrap, secondary columns collapse progressively, and commit details stack below the graph on narrow views.
  • Restored direct Git Blame Column navigation. Clicking an annotation opens the exact commit and focuses the matching source file in Changed Files, including renamed and historical paths.
  • Hardened selected-file Git operations for renames, unusual file names, literal pathspecs, merge-commit mainline selection, and repositories without an initial commit.
  • Moved generated diff snapshots to extension storage so reviewing history does not modify the workspace or repository metadata.

Features

  • Smart commit side panel in a dedicated Smart Git activity bar view.
  • Repository picker for multi-root workspaces. The commit panel and Smart Git Log share the selected repository.
  • Commit selected changed files with git commit --only, so unrelated staged files are not included.
  • Amend the current HEAD commit, including message-only amend when no files are selected.
  • Commit and push in one action, including first push with upstream setup.
  • Amend and push a published HEAD with an explicit --force-with-lease confirmation.
  • Filter changed files, select visible changes, and copy relative paths.
  • Stage or unstage individual files or the current selection.
  • Push the current branch, fetch all remotes with pruning, and update the project with git pull --ff-only.
  • Roll back individual files or the current selection.
  • Open a diff by selecting a changed file, with file, Explorer, staging, path-copy, and rollback actions in its context menu.
  • Create a new branch from the current HEAD.
  • Switch to local branches and check out remote branches with tracking.
  • Continue or abort in-progress rebase, merge, cherry-pick, and revert operations from the panel.
  • See unpushed local commits compared with the current upstream.
  • Show unversioned files as a grouped parent folder in the file tree.

Smart Git Log

  • View a Smart Git Log panel beside Terminal. It defaults to the current branch and can be switched to all branches.
  • Search by text, hash, branch, author, date, and path.
  • Load older history in 80-commit pages without a fixed history cutoff.
  • Inspect changed files and per-file diffs for a selected commit.
  • Open a commit patch, copy full hashes, open files at a revision, cherry-pick a commit, create branches or tags, revert commits, and rebase onto a selected commit. Cherry-pick and revert prompt for a mainline parent on merge commits.
  • Select multiple commits in the graph with Cmd/Ctrl-click or Shift-click.
  • Squash a contiguous first-parent commit range from the unfiltered current-branch graph. The graph opens an in-panel commit-message dialog whose default content is the selected commit subjects, one per line.
  • Reset the current branch to a selected commit with --mixed, --soft, or --hard after confirmation.
  • Create a backup branch before squash and reset operations.
  • Draw commit graph lanes with stable colors per branch lane, while forked lanes receive different colors.
  • When a commit is opened from Git Blame Column, the changed-file tree expands, centers, selects, and focuses the blamed source file instead of selecting the first file in the commit.
  • When reviewing per-file diffs from Smart Git Log, Alt+Up and Alt+Down run Smart Git Log previous/next change commands and can continue into the previous or next file in the commit.
  • Temporary diff and revision files are written under VS Code's extension storage, outside the selected repository. They keep the source file name, so VS Code and Trae can infer syntax highlighting for files such as .cc, .h, .ts, Makefile, and .gitignore.

Git Blame Column

  • Show Git Blame Column annotations in editors, including age coloring, hover actions, line-number actions, copy commit hash, and an optional built-in Blame Details tree.
  • Click a blame annotation, use its hover action, or use the line-number context action to open the blamed commit in Smart Git Log.
  • Blame uses smartGitLog.gitPath, so custom Git executables are respected consistently.
  • Commit details use first-parent changed-file lookup, which keeps merge commit file lists useful.

Use gitBlameColumn.primaryAction to choose the target of Show Blame in Smart Git Log:

  • smartGitLog: open the blamed commit in Smart Git Log. This is the default.
  • details: open the built-in Blame Details tree.
  • gitLens: try GitLens first, then fall back to Smart Git Log.

Explorer Reveal

  • The Explorer title bar includes Show Active File in Explorer.
  • The command remembers the last focused file-backed editor, opens Explorer, focuses the file tree, and requests reveal for the active file.
  • Remote Trae and VS Code workspaces are supported. The reveal code derives remote URI candidates and common remote-home aliases from the active extension host.
  • If automatic remote authority detection is not enough, set smartGitLog.explorerRevealRemoteAuthority to a Trae remote URI, an exact remote authority, or an SSH host alias such as dev1.

Usage

  1. Open a Git workspace in VS Code or Trae.
  2. Open the Smart Git activity bar item for commit workflows.
  3. Open the Smart Git Log panel for the commit graph and history actions.
  4. Select files, enter a commit message, and use Commit or Commit and Push.

Installation

  1. Run npm ci.
  2. Run npm run package to create a versioned VSIX package.
  3. In VS Code or Trae, run Extensions: Install from VSIX... and select the generated package.

VS Code can also install the package from a terminal:

code --install-extension TaoKun.git-blame-column --force

Notes

  • History-rewriting actions are guarded by prompts and create smart-git-log-backup/... branches before changing the current branch.
  • Squash requires a clean working tree, supports contiguous first-parent commits from the unfiltered current branch graph, and refuses ranges whose replay would flatten a merge.
  • The old Interactive rebase button was removed because it launched a dangerous history-rewriting terminal command directly from the graph toolbar.
  • Smart Git Log removes a generated snapshot after its last editor closes and also prunes stale snapshot directories, keeping storage bounded without modifying repository metadata.
  • Update Project uses fast-forward-only pulls to avoid starting an interactive merge inside VS Code.
  • Rollback uses older-Git-compatible git reset, git checkout, and git clean commands instead of git restore.
  • Unstage handles repositories without an initial HEAD commit by removing paths from the index instead of relying on git reset.
  • The extension shells out to the configured Git executable. You can change it with smartGitLog.gitPath.

Development

  • npm run compile: compile the extension.
  • npm run test: compile and run the node test suite.
  • npm run check: compile, run tests, and check whitespace with git diff --check.
  • npm run package: compile and create the installable VSIX.

Related extensions