Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Git Repository Viewer: Commit Graph, Diffs & Blame

A local Git repository’s commit graph, diffs, blame and insights, right in your browser.

Free preview, no sign-upIncluded in your pass Pro tool Pro pass: ₹179 / $5.99 for 30 days On this device: nothing is sent
+3 +1 more details No uploadWorks offline once opened Developer

Free preview: every count, the newest commits of the graph with their changes and the first rows of every other list (up to 10). Locked until you unlock it: download and copy.

Pro pass ₹179 for 30 days or ₹79 for 1 week, one‑time. Pro pass $5.99 for 30 days or $2.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: every count, the newest commits of the graph with their changes and the first rows of every other list (up to 10).
  • Locked until you unlock it: download and copy.
  • Unlock: Pro pass, ₹179 for 30 days or ₹79 for 1 week, a one-time payment that never renews. Unlock: Pro pass, $5.99 for 30 days or $2.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

Open a repository

The folder with the .git folder in it, the .git folder itself or a bare repository. Or drop the folder on this panel.

No folder at hand? Paste git log output

The output of git log --graph --oneline --all for the graph, or of git log --numstat for the insights.

Next steps Done. What next?

Start over

A Pro pass unlocks the full result. See passes

All developer tools

About the Git Repository Viewer: Commit Graph, Diffs & Blame

Open a Git repository from your computer and read it like a desktop Git client would: the commit graph of every branch and tag with its lanes and merges, each commit with its message, author, parents and the changes of every file side by side or inline, the files at any commit with each file’s history and blame, a comparison of two branches, tags or commits (the commits each side has and the files that differ from the merge base, as on a pull request), insights (commits per author with .mailmap applied, commits per week, a punch card, churn and the files changed most) and the largest files anywhere in the history.

The page reads the repository’s own files, exactly as Git stores them: loose objects, pack files with their deltas, branches, tags and packed-refs. Everything runs in your browser, in a background worker; nothing is uploaded and nothing is written to the folder. No folder at hand? Paste the output of git log --graph or git log --numstat.

Without a pass the result is a free preview: every count in full, the newest commits of the graph with their changes (half of them, up to 10) and the first rows of every other list by the same rule. The rest of the history, the lists in full and the downloads unlock with a Pro pass.

How to use it

  1. Choose the repository folder (the one with the .git folder in it) or drop it on the page. A ZIP of a cloned folder opens too, and so does the example repository.
  2. Pick a commit in the graph to read its message and see each changed file side by side or inline. Search finds commits by message, author, branch, tag or id.
  3. Files shows the tree at any branch, tag or commit; open a file to read it, see the commits that changed it, or blame it line by line.
  4. Compare two branches, tags or commits: what each one has that the other lacks, and every file that differs from their merge base.
  5. Insights counts commits per author and per week, draws a punch card and ranks the files changed most; Largest files finds what makes the repository heavy. With a Pro pass you can download the commit list as CSV, a commit or a comparison as a .patch and the insight tables (without a pass the page shows the free preview).

Examples

A feature branch and a merge
Input
The example repository: main, feature, origin/main, a merge and the tag v1.0.0
Result
Two lanes that join at “Merge branch 'feature'”, the branch and tag names on their commits, and each commit’s files with their +/− lines and changes side by side
Who wrote this line?
Input
Files → src/app.js → Blame, then History
Result
Each line with the commit and author that last changed it, and the 4 commits that changed the file
What is not pushed yet?
Input
Compare origin/main with main
Result
main is 1 commit ahead (Release 1.0.0) and 0 behind; 2 files differ: .mailmap is new and src/app.js gains 2 lines

Common uses

  • Reading the history of a project you just cloned without installing a Git client.
  • Reviewing what a branch changes before you merge it, file by file.
  • Finding who changed a line, and in which commit, from a computer where you cannot install software.
  • Seeing who works on a project and when, and which files change most often.
  • Finding the large files that make a repository slow to clone.

What the viewer reads, and how

  • Objects: loose objects (zlib-compressed, under objects/) and pack files through their version 2 index, including both kinds of delta Git uses: an offset delta against an earlier object of the same pack and a reference delta against an object named by its id. Only the objects a view needs are read, so a large repository costs only what you look at.
  • Refs: branches, remote branches and tags as loose files and in packed-refs, annotated tags followed to their commit, and HEAD (a branch, or a detached commit), as the repository layout describes them.
  • The graph order is git log’s --date-order: “Show no parents before all of its children are shown, but otherwise show commits in the commit timestamp order.” The lanes are drawn like git log --graph: a branch keeps its lane, a merge opens one for its other parent, and lanes join where histories meet.
  • Authors are merged with the repository’s .mailmap, which, in Git’s words, is “used to map author and committer names and email addresses to canonical real names and email addresses” (gitmailmap).

Diffs, history and blame

  • A commit’s changes are shown against its first parent (for a merge, what the merge brought to that branch), in Git’s unified format with function names in the hunk headers. A file moved without changes shows as a rename; a file moved and edited shows as deleted and added.
  • History lists the commits whose version of the file differs from every parent: the commits git log -- <file> shows, without following renames.
  • Blame follows each line back through the history to the commit that last changed it, as git blame does; a line it could not follow further (a shallow clone, or the walk’s limit of 5,000 commits) is marked with ^.

Opening a repository

  • A folder: choose the repository’s folder, the .git folder itself or a bare repository (project.git). Only the files inside .git are read; your working files are not opened. Some browsers leave hidden folders such as .git out of a folder you choose with the button: then choose the .git folder itself, or drop the folder on the page.
  • A ZIP of a cloned folder (the .git folder must be inside it), up to 768 MB per file in the ZIP. GitHub’s “Download ZIP” does not work: “Snapshots don’t contain the entire repository history” (GitHub Docs). Clone the repository instead and open its folder.
  • Pasted output of git log --graph --oneline --all shows the graph, and git log --numstat the insights, for a repository you can run git in but cannot open here.

Large files and the size of a repository

Largest files measures every version of every file in the newest 20,000 commits, and lists each content once with the newest commit that has it. Every clone downloads all of them, so large binaries slow every clone even after they are deleted. GitHub warns above 50 MiB and “GitHub blocks files larger than 100 MiB”; for larger files it points to Git LFS. Removing a file from the history needs a history rewrite on your own computer, with a tool such as git filter-repo, and everyone who cloned the repository has to clone it again.

Limitations

  • Repositories that use SHA-256 object names (extensions.objectFormat = sha256) cannot be read yet. Neither can refs kept in the reftable format: git refs migrate --ref-format=files converts a copy back to loose files with packed-refs.
  • Rename detection matches files with exactly the same content only, and a file’s history does not follow renames (git log --follow does).
  • Diffs, line counts and blame line up changes without git’s own tie-breaking rules: where a change can be lined up two ways (around blank lines or closing braces), a hunk or a blamed line can differ slightly from what git shows.
  • A partial clone (git clone --filter) lacks the objects it did not download, and a shallow clone stops at its boundary: those parts of the history are missing here too. Objects borrowed from another repository through objects/info/alternates are not read.
  • Signed commits are shown as signed; the signature is not verified, which would need the signer’s public key.
  • The graph holds the newest 200,000 commits; line counts for insights cover the number of commits you choose, and a commit’s line counts cover its first 300 files. Very large repositories can be slow, or too large for the browser’s memory: open a fresh, smaller clone then.
  • A linked worktree’s .git is a file that points elsewhere: open the main repository folder. Submodules show as entries pointing at a commit; open each submodule’s own repository to browse it. Files kept in Git LFS show as the small pointer files the repository stores.

Privacy

On this device: nothing is sent

The repository is read in your browser, in a background worker. Nothing is uploaded, stored or written to the folder; closing the page forgets it.

Frequently asked questions

What do I get without a pass?

Without a pass, Git Repository Viewer: Commit Graph, Diffs & Blame shows every count, the newest commits of the graph with their changes and the first rows of every other list (up to 10). Until you unlock it, the result can’t be downloaded or copied. A Pro, Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

Is my code uploaded anywhere?

No. The browser hands the page the files you choose, and a background worker on your own device reads them. Nothing is sent to MySmartCoPilot or anyone else, and the folder is never changed.

The page says it found no .git folder. Why?

Some browsers leave hidden folders such as .git out when you choose a folder with the button. Choose the .git folder itself, drop the repository folder on the page instead, or open a ZIP of the folder. GitHub’s Download ZIP has no history in it, so clone the repository first.

Can I open a repository by its GitHub or GitLab URL?

Not directly: clone it with git clone <url>, then open the folder. The page works only with the repository files on your own device, which is also why nothing leaves it.

In which order are the commits listed?

Newest first, and never a parent before its children: git log’s --date-order. Merges and their branches stay in the lanes beside the main line.

What does the free preview show?

Every count in full, the newest commits of the graph with their changes (half of them, up to 10), and the first rows of every other list by the same rule; with one row, the row shows and its figures are masked. The rest and the downloads unlock with a Pro pass.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.