Commit graph 2026-11-05
A commit graph represents version-control commits as vertices and their parent relationships as directed edges. In Git, taking an edge from a child to each parent gives a directed acyclic graph: an existing version-control commit has fixed parents, and a newly created child cannot become its own ancestor.[ref]
For example, if and both descend directly from , and merge records parents , its edges are , , and . The merge retains both lines of ancestry. A version-control branch labels a selected tip; deleting that label does not by itself remove every reachable vertex. This graph supports ancestry tests and finding common bases for version-control merging.
Git (version control) 2026-11-05
Git is a distributed version control system whose history records version-control snapshots linked by version-control commits. A local repository can contain history and support comparisons and new version-control commits without a connection to a central server. Version-control branches name movable tips of that history.[ref]
Suppose two collaborators start at the same version-control commit and each records a different change. Their new version-control commits share a parent in the commit graph. Exchanging repository objects makes both histories available; version-control merging can then combine their work, possibly exposing a merge conflict. The stored version-control snapshot identifies recorded file contents, while external datasets and installed software dependencies still need their own reproducibility record.
Version-control commit 2026-11-05
A version-control commit records an identifiable revision together with history metadata. In Git, a commit names a tree snapshot and parent commits, alongside author/committer information and a message. An initial commit has no parent; an ordinary commit has one, while a merge can have several.[ref]
The parent links form a commit graph, allowing a tool to compare revisions and traverse ancestry. Rewriting a commit's recorded content or metadata creates a different commit object rather than silently modifying the old one. A commit identifies the recorded source snapshot; reproducing a calculation also requires external data, selected dependencies and execution settings that were not necessarily stored in that snapshot.