Коммит

Оригинальное название: 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: — по ним можно автоматически собирать список изменений к релизу.

Один коммит — одна мысль

Если в одном коммите и новый фильтр, и смена шрифтов, и рефакторинг корзины, откатить что-то одно не получится. Мелкие осмысленные коммиты проще проверять, отменять и искать по ним момент, когда сломалась функция.

Обновлено:

Все термины раздела «Git»

Что будем искать? Например,Продвижение