Что такое коммит в Git — почему это снимок всего проекта, а не сохранение файла

Первое, что слышишь про Git: «делай коммиты почаще». Звучит как «сохраняйся почаще», и кажется, что коммит — это Ctrl+S. Вот неожиданное: коммит сохраняет не файл, а весь проект целиком — снимок всех файлов в одну секунду, с подписью, зачем ты его сделал. И потерять такой снимок почти невозможно. Разберёмся, из чего он состоит.
Что такое коммит простыми словами
Коммит — это зафиксированная точка в истории проекта. Ты поработал, решил «вот это состояние хочу запомнить» — делаешь коммит. Git запоминает, как выглядели все файлы в этот момент, и вешает ярлык: кто, когда и зачем.
Аналогия: ты не сохраняешь один лист, ты фотографируешь весь стол с разложенными бумагами. Через неделю всё переставил — но старое фото цело, и в любой момент можно вернуться ровно к тому раскладу.
Из чего состоит коммит
Три вещи:
- Снимок всех файлов — не «что изменилось», а полная картина проекта на этот момент. (Git хитро не дублирует неизменившееся, но для тебя это выглядит как целый снимок.)
- Сообщение — короткая подпись зачем: «добавил кнопку входа». Это ты пишешь сам.
- Родитель — ссылка на предыдущий коммит. Так снимки выстраиваются в цепочку — историю, по которой можно идти назад.
Плюс у каждого коммита есть уникальный хеш — длинный код вроде a3f8c1. Это его отпечаток пальца: по нему всегда найдёшь именно этот снимок.
Почему коммит — это два шага, а не один
git add и git commit — новички спотыкаются, почему нельзя одной командой.
git add— кладёшь изменения на «стол» (staging area, зона подготовки). Говоришь Git: «вот это войдёт в снимок».git commit -m "..."— щёлкаешь затвором. Фотографируется только то, что на столе.
Зачем так? Чтобы можно было собрать в один коммит не всё подряд, а осмысленный кусок. Поправил две несвязанные вещи — сделай два отдельных коммита с разными подписями. Снимок — это не «всё, что накопилось», а то, что ты сознательно на него положил.
Почему коммит сложно потерять — и это главное
Вот ради чего всё. Раз каждый коммит — цельный снимок в цепочке, любой из них — точка возврата. Наломал дров за час? Вернулся к утреннему коммиту, и проект ровно такой, каким был. Ничего не «перезаписалось».
Больше того: коммит, который ты сделал, почти нельзя случайно стереть. Даже если кажется, что «удалил» — Git ещё какое-то время держит его по хешу, и его можно откопать. Поэтому правило «коммить почаще» — это не занудство, а страховка: каждый коммит — сохранёнка, к которой всегда есть дорога назад. Как эту дорогу пройти, если что, — в разборе как отменить коммит.
Где ты с этим встретишься
Как только заведёшь Git в проекте, коммиты станут твоим ритмом: поработал — закоммитил. Дальше коммиты живут на ветках (это подвижные закладки на последний коммит) и уезжают на GitHub командой git push. Весь минимальный набор команд — в шпаргалке команды Git для новичка.
Что писать в сообщении коммита?
Коротко и по делу: что изменилось и зачем, в прошедшем времени — «добавил тёмную тему», «починил вход через Google». Не «правки» и не «asdf». Через месяц ты будешь листать историю глазами — и хорошее сообщение сэкономит тебе полчаса поисков. Одна мысль на коммит: если в подписи лезет слово «и», возможно, это два коммита.
Чем коммит отличается от сохранения файла?
Сохранение (Ctrl+S) перезаписывает файл — старая версия исчезает. Коммит добавляет новый снимок в историю, не стирая прежние. Поэтому к любому коммиту можно вернуться, а к «версии файла пять сохранений назад» — нет. Git хранит все снимки, а не только последний.
Нужно ли коммитить каждый файл отдельно?
Нет. Один коммит обычно собирает все изменения, которые относятся к одной задаче, — хоть в десяти файлах. Смысл не в количестве файлов, а в том, чтобы снимок был логически цельным: «добавил вход» — один коммит, даже если это тронуло пять файлов.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





