foundation
Коммит
Создавайте небольшие неизменяемые снимки с ясным intent, авторством, связями с родителями и diff для review.
Git-коммит — неизменяемый снимок плюс метаданные: ID родительских коммитов, author, committer, сообщение и tree object на blob'ы файлов. Коммиты образуют направленный ациклический граф — каждый знает родителя(ей), а не наоборот.
git add src/auth.ts
git commit -m "fix(auth): reject expired refresh tokens"
Хороший коммит — одно логическое изменение, которое можно review, откатить, cherry-pick и объяснить через полгода. Staging (`git add -p`) позволяет разбить смешанные правки в рабочем дереве на отдельные коммиты.
На интервью: объясните идентичность коммита (SHA-1 от содержимого), зачем мелкие коммиты помогают review и bisect, как история поддерживает трассируемость релизов.
Типовые ошибки: огромные смешанные коммиты без точки отката; переписывание публичной истории без согласования; коммит секретов или generated-артефактов, которые должны быть в `.gitignore`.
Компромисс — детальная история (больше коммитов) против шума в review; единица должна быть логической, а не микроскопической.
Чеклист:
- Объясните идентичность коммита и связи с родителями.
- Одно логическое изменение на коммит.
- Отделяйте форматирование от поведения.
- Staging осознанно, с patch mode при необходимости.