Что такое коммит (commit) в системе контроля версий Git?

Ответ

Коммит (commit) в Git — это основная единица истории проекта; по сути, это «снимок» (snapshot) состояния всех отслеживаемых файлов в репозитории в определенный момент времени.

Из чего состоит коммит:

  • Уникальный хеш (SHA-1): Идентификатор коммита, например a1e8fb5.
  • Указатель на родительские коммиты: Обычно один, но может быть несколько (в случае слияния веток).
  • Метаданные: Имя автора, email, дата и время создания.
  • Сообщение коммита: Описание сделанных изменений.

Пример жизненного цикла коммита:

# 1. Добавляем измененные файлы в staging area (индекс)
git add . 

# 2. Фиксируем изменения, создавая новый коммит
git commit -m "feat: Add user authentication endpoint"

Ключевые принципы работы с коммитами:

  • Атомарность: Один коммит должен содержать одно логическое изменение. Это упрощает отладку, ревью кода и откат изменений.
  • Неизменяемость: Существующие коммиты нельзя изменить. Можно лишь создать новые поверх старых (например, с помощью git rebase или git commit --amend), но это создаст новую историю.
  • Информативные сообщения: Качественное сообщение коммита — залог понятной и поддерживаемой истории проекта.

Для просмотра истории коммитов используется команда git log.

Ответ 18+ 🔞

А, слушай, смотри, вот эта вся ваша гитовская магия с коммитами. Это ж, блядь, как фотка, понимаешь? Только не селфи в сортире, а снимок всего твоего кода, всего проекта, в один конкретный момент. Зафиксировал состояние — и всё, пиздец, точка во времени. Как в архиве, только для кода.

Ну, из чего эта хуйня собрана, этот коммит:

  • Хеш, ёпта: Уникальный номер, типа a1e8fb5. Это как ДНК коммита, второй такой в природе не найдёшь, даже если захотеть.
  • Родители: Обычно один предок, но если ты ветки сливал, то их может быть и два. Как у человека, только без скандалов.
  • Метаданные: Кто, когда и с какого мыла это натворил. Не спрячешься, падла.
  • Сообщение: А вот это самое важное! Это как записка на холодильник будущему себе, который через полгода будет охуевать и думать: «Что за хуйню я тут написал?».

Как это на практике выглядит, этот цирк:

# 1. Готовим всё, что натворили, к отправке. Собираем в кучку.
git add .

# 2. И — бабах! Фиксируем на века с криком души.
git commit -m "feat: Add user authentication endpoint"

А теперь, блядь, главные правила, чтобы не обосраться:

  • Одно дело — один коммит. Не надо впихивать в один коммит и новую кнопку, и починку бага с анимацией, и обеденный перерыв. Это атомарность, ёпта! Так и откатить проще, и понять, что происходит.
  • Высечено в камне. Старый коммит не перепишешь. Можно только поверх накатить новый, но это уже будет другая история, и всем придётся подстраиваться. Как в плохом сериале — реткон, блядь.
  • Пиши нормально! Сообщение «чё-то сделал» — это пиздец, доверия ебать ноль. Напиши внятно, что и зачем, чтобы через месяц самому не было стыдно.

Ну а чтобы всю эту красоту посмотреть, историю своих подвигов, есть git log. Там всё как на ладони, кто, когда и какую дичь в репу закоммитил.