Коммиты: Сохранение изменений¶
Коммит — это снимок состояния вашего репозитория в определенный момент времени. Это основная единица истории в Git.
Создание коммита¶
Базовый коммит с сообщением¶
git commit -m "Краткое описание изменений"
Флаг -m позволяет написать сообщение коммита прямо в терминале.
Коммит без флага -m (через редактор)¶
Если не указать -m, Git откроет текстовый редактор для ввода сообщения:
git commit
Это рекомендуется для многострочных сообщений.
Структура хорошего сообщения коммита¶
Правильное сообщение помогает понять историю проекта спустя месяцы.
Формат:
Заголовок (до 50 символов)
Пустая строка
Подробное описание (если нужно).
- Что изменилось?
- Почему это было сделано?
- Какие побочные эффекты?
Описание пишется в повелительном наклонении ("Добавить", а не "Добавил").
Пример:
Добавить валидацию email в форму регистрации
- Добавлена проверка формата email на клиенте
- Добавлена серверная валидация
- Исправлена ошибка отображения ошибки валидации
Closes #123
Изменение последнего коммита¶
Если вы забыли добавить файл или хотите исправить опечатку в сообщении:
git commit --amend -m "Новое исправленное сообщение"
Внимание:
--amendменяет хеш коммита. Не используйте его для коммитов, которые уже отправлены в удаленный репозиторий (если только вы не уверены, что никто другой еще не забрал эти изменения).
Пропуск стадии индексирования¶
Можно добавить все отслеживаемые измененные файлы и сделать коммит одной командой:
git commit -a -m "Сообщение"
Флаг -a автоматически добавляет измененные файлы, но не добавляет новые (неотслеживаемые) файлы. Их всё равно нужно добавлять через git add.
Просмотр коммитов¶
Посмотреть последний коммит:
git show
Посмотреть статистику изменений в последнем коммите:
git show --stat
Отмена коммита (до отправки)¶
Если вы сделали коммит, но поняли, что он ошибочен, и еще не делали git push:
git reset --soft HEAD~1
Эта команда отменит коммит, но оставит изменения в индексе (готовыми к новому коммиту).
git reset --mixed HEAD~1
Отменит коммит и уберет файлы из индекса, но оставит изменения в файлах.
git reset --hard HEAD~1
Опасно! Полностью удалит коммит и все изменения в файлах. Используйте только если уверены.