Git History Visualizer
Export a commit list from Git and paste it here to see the parent graph. Choose two commits to find their best common ancestors and the shortest paths back through each parent chain. Missing parents in partial exports and disconnected histories are shown explicitly. This browser tool does not read your repository or execute Git.
Key features
- Parse full commit-parent-subject TSV from git log or a JSON commit array
- Validate IDs, merge parents, duplicate rows and cycles; identify missing parents in partial exports
- Draw every known parent edge and keep disconnected components visibly separate
- Compare any two commits, including merges with multiple best common ancestors
- Download the graph as SVG and a structured analysis report as JSON
How to use
- Run the documented git log export in your own terminal, paste its output, or load the example.
- Analyze the data; resolve errors such as duplicate IDs or cycles.
- Choose two commits to compare and inspect best common ancestors and parent paths.
- Scroll the graph and use the full commit table for exact IDs and subjects.
- Download SVG or JSON if you need to share the reviewed result.
Use cases
- Explain where a feature branch diverged before a merge
- Inspect merge commits with both parents instead of only first-parent history
- Detect disconnected imported histories or missing parent rows in a limited log export
Frequently asked questions
What text format should I paste?
Use three tab-separated columns per line: full commit ID, space-separated parent IDs, subject. For example, git log --all --pretty=format:%H%x09%P%x09%s. JSON can be an array or {"commits":[{"id":"...","parents":["..."],"subject":"..."}]}.
Does the tool connect to my repository?
No. It only analyzes pasted or locally selected text. Run any git log export yourself in your terminal; this page does not execute Git.
What is a best common ancestor?
A commit reachable through parent links from both selections for which there is no newer common descendant in the supplied graph. Criss-cross merges can produce several best ancestors.
What if parents are missing from the export?
Missing parent IDs are reported as boundary references. Comparisons use only supplied commits, so a partial export can hide a real common ancestor.
Are disconnected histories errors?
No. Unrelated roots form separate components. A comparison across them reports no common ancestor in the supplied data.
What are the limits?
The input is limited to 256 KiB and 150 commits; each commit can list up to 8 parents. IDs must have 7–64 hex characters and match parent IDs exactly. This is a local visual analysis, not Git’s full repository object database.
Privacy
Pasted history and imported files are processed in your browser memory. No repository is opened and no Git command or network request runs. Downloaded SVG and JSON include commit IDs and subjects; review them before sharing.
Comments & questions