Tree (дерево) — структура данных, отражающая иерархические зависимости. По сути весь проект Git — это ориентированных граф.
Корневой узел — самый верхний узел дерева.
Корень — одна из вершин, по желанию наблюдателя.
Лист — узел, не имеющий дочерних элементов.
Commit (фиксация) — некоторые изменения проекта, которые запоминаются системой, обладают единым комментарием и уникальным хэшем SHA-1 (есть споры касательно этого алгоритма, он имеет ограниченность уникальных значений). Первый коммит является корневым узлом дерева. Все последующие коммиты могут быть как листьями, так и корневыми узлами.
Snapshot (снимок) — образ файловой системы проекта. Git хранит не дельту между двумя коммитами. Git в каждом коммите хранит состояние всей файловой системы проекта на момент коммита. Git в целях экономии места хранит только измененный файл, а на те файлы, которые не были изменены, осуществляет доступ по ссылке.
HEAD — указатель на текущий коммит, то есть коммит, чей snapshot отражен в файловой системе. Указывает на состояние проекта.
Как Git видит проект
Проект — это дерево. Узлами дерева являются коммиты. Каждый коммит характеризуется сообщением, набором файлов, которые претерпели изменения, ссылки на неизменные файлы, уникальных хэш SHA-1, с помощью которого можно идентифицировать коммит.
В проект определяется определенная последовательность коммитов, которые группируются в ветвь. Ветви не влияют друг на друга. Ветви «растут» сами по себе (пока не выполнится слияние). Для фиксации того, кто и когда делал изменения, к коммиту прикрепляется временная метка и имя автора.