An introduction to Git internals
To really understand and make good use of at least some of the methods described in this chapter, you will need to understand at least the very basics of Git internals. Among other things, you will need to know how Git stores the information about revisions.
When describing Git internals, it will be useful to create different types of data to later examine. This can be achieved with a set of low-level commands that Git provides as a supplement to user-facing high-level commands. These low-level commands operate on the level of the internal representation instead of using friendly abstractions. That makes those commands very flexible and powerful, though perhaps not user-friendly.
Git objects
In Chapter 4, Exploring Project History, you learned that Git represents history as the Directed Acyclic Graph (DAG) of revisions, where each revision is a graph node represented as a commit object. Each commit is identified by the SHA-1 identifier. We...