Граф истории: родитель, хеш и DAG
В прошлом уроке мы увидели, что каждый коммит — это снимок, полная картина проекта. Теперь зададимся вопросом: как эти картинки связаны друг с другом? Каждый коммит несёт маленькую «заметку», указывающую на коммит, который был перед ним, — его родителя. Сцепление этих заметок образует граф, текущий
Каждая картинка (коммит) несёт заметку: «Я иду сразу после той картинки». Эти заметки сцепляют картинки в одностороннюю карту. И у каждой картинки есть уникальный отпечаток пальца — измените что-нибудь, и отпечаток изменится.
- Родитель
- Указатель от коммита к коммиту, который был перед ним. Сцепление указателей на родителя и образует историю.
- DAG (направленный ациклический граф)
- Форма истории Git: каждый коммит указывает назад на своего родителя, и это сцепление образует граф, текущий в одном направлении, без циклов.
- Хеш (SHA-идентификатор)
- Уникальный отпечаток фиксированной длины, вычисляемый из содержимого коммита (включая его родителя). Измените хотя бы один символ — и хеш изменится.
- Корневой коммит
- Первый коммит в репозитории. Это единственный коммит без родителя — точка начала графа.
- Метаданные
- Информация, прикреплённая к коммиту: кто его написал, когда и сообщение. Она тоже входит в хеш.