- Хэш коммита - идентификатор коммита, полученный с помощью алгоритма SHA-1.
- Хэш обладает свойством: если хоть что-то в исходных данных поменяется, хеш тоже изменится.
- Git хранит таблицу соответствий хеш → информация о коммите в служебных файлах .git.
После вызова git log появляется список коммитов с их описанием.
Вот из каких элементов состоит описание:
- Строка из цифр и латинских букв после слова commit — это уже знакомый вам хеш коммита.
- Author — имя автора и его электронная почта.
- Date — дата и время создания коммита.
- Сообщение к коммиту.
Также есть cокращённый лог git log --oneline - список коммитов с описанием, содержит только первые несколько символов хеша и комментарии.
Вывод будет примерно таким:
Когда вы делаете коммит, Git обновляет refs/heads/master (служебный файл) — записывает в него хеш последнего коммита. Получается, что HEAD тоже обновляется, так как ссылается на refs/heads/master.
При работе с Git указатель HEAD используется часто, вместо хеша последнего коммита можно просто написать слово HEAD.
stateDiagram-v2
[*] --> Untracked
Untracked --> Staged: git add
Staged --> Modified: git reset HEAD или изменения после add
Modified --> Staged: git add
Staged --> Committed: git commit
Committed --> Modified: редактирование файла
Modified --> Untracked: git rm --cached (если файл удалён из индекса)
Staged --> Untracked: git rm --cached + изменения (редко, но возможно)
Committed --> Staged: изменения + git add (после нового изменения)
Untracked --> [*]: файл удалён с диска (вне системы)
state "Untracked" as Untracked
state "Modified" as Modified
state "Staged" as Staged
state "Committed" as Committed
note right of Untracked
Файл существует в рабочей директории,
но не отслеживается Git'ом
end note
note right of Modified
Файл изменён по сравнению с последним коммитом,
но изменения ещё не добавлены в индекс
end note
note right of Staged
Изменения файла зафиксированы в индексе (staging area),
готовы к коммиту
end note
note right of Committed
Файл зафиксирован в истории репозитория
end note

