Commit
It is a package containing tree and blob, and it retains the changes we do to one or more project's files.
Git calculates a hash for every commit, used for its identification (the comment we attach to the commit is not unique).
- Commits create the directed acyclic graph of our history:
- Each commit remembers which commit came before it (a merge commit points to two previous commits)
 
 - A commit is a snapshot of the state of your files, with some metadata, informations about it contents, authors and date.
 - Each commit has a pointer to the previous one/s, and that pointer makes it unique.
 
Directed Acyclic Graph (DAG) of Commits
This chart shows a more complex DAG structure typical in Git repositories:
graph TD;
    A[Commit A] --> B[Commit B]
    A --> C[Commit C]
    C --> D[Commit D]
    B --> E[Commit E]
    D --> E
    D --> F[Commit F]
    F --> G[Commit G]
    E --> H[Final Commit]
        linkStyle 0 stroke:#2ca02c,stroke-width:2px
    linkStyle 1 stroke:#2ca02c,stroke-width:2px
    linkStyle 2 stroke:#0000FF,stroke-width:2px
    linkStyle 3 stroke:#00FF00,stroke-width:2px
    linkStyle 4 stroke:#0000FF,stroke-width:2px
    linkStyle 5 stroke:#0000FF,stroke-width:2px
    linkStyle 6 stroke:#0000FF,stroke-width:2px
    linkStyle 7 stroke:#FF0000,stroke-width:2px