Коммит
Оригинальное название: commit
Коротко
Зафиксированное состояние файлов проекта в истории Git: снимок изменений с автором, датой, сообщением и ссылкой на предыдущий коммит.
Что такое «Коммит»
Коммит — основная единица истории. Каждый хранит полный снимок отслеживаемых файлов (Git не дублирует неизменённые файлы, а ссылается на уже сохранённые), ссылку на родителя, имя автора, время и сообщение. По цепочке родителей можно пройти от сегодняшнего состояния до самого первого коммита и вернуть проект в любую точку.
Идентификатор коммита — хеш, обычно из 40 шестнадцатеричных символов, вычисленный от его содержимого и родителя. Изменить что-то в старом коммите незаметно нельзя: поменяются хеши всех последующих. Для удобства используют первые 7–8 символов, например a1b2c3d.
Как сделать коммит аккуратно
В коммит попадает не всё подряд, а только то, что добавлено в индекс. Это позволяет разделить смешанные правки на логичные шаги:
git status
git add -p catalog.php # выбрать нужные куски по одному
git commit -m "Фильтр каталога: учитывать скидочную цену"
git commit --amend # исправить последний, пока он не отправлен
git revert a1b2c3d # отменить старый коммит новым
--amend переписывает последний коммит, поэтому применять его можно только до отправки на сервер. Для уже опубликованных изменений безопасен git revert: он не удаляет историю, а добавляет обратный коммит.
Каким должно быть сообщение
Первая строка — коротко, что изменилось, примерно до 50–70 символов. Через пустую строку — почему и с какими оговорками. «fix», «правки», «ещё» бесполезны: через полгода по ним никто не поймёт, где искать причину ошибки. Многие команды используют соглашение Conventional Commits с префиксами feat:, fix:, docs: — по ним можно автоматически собирать список изменений к релизу.
Один коммит — одна мысль
Если в одном коммите и новый фильтр, и смена шрифтов, и рефакторинг корзины, откатить что-то одно не получится. Мелкие осмысленные коммиты проще проверять, отменять и искать по ним момент, когда сломалась функция.

