Skip to content

Git commit - Фиксация

Как переводится commit?

Слово commit в переводе с английского означает зафиксировать, закрепить. В контексте Git оно обозначает сохранение изменений в истории репозитория.

Фиксация git commit — это один из ключевых механизмов Git. Он фиксирует изменения, внесенные в файлы, и добавляет их в локальный репозиторий.

Commit — основа работы с Git. Они позволяют фиксировать изменения, отслеживать историю проекта и управлять разными версиями кода. Умение правильно работать с git commit помогает организовать эффективный рабочий процесс.

Основные функции commit

  • Сохраняет текущее состояние файлов.
  • Позволяет отслеживать историю проекта.
  • Дает возможность откатиться к предыдущим версиям.
  • Служит точкой восстановления в случае ошибок.

Каждый commit имеет уникальный идентификатор (хеш) и содержит информацию:

  • Автор фиксации
  • Дата и время фиксации
  • Список измененных файлов
  • Сообщение фиксации

Описание необходимых шагов для выполнения коммита

1. Указание имени автора и почты

Перед созданием коммита Git требует указать имя и email автора. Эти данные записываются в метаданных коммитов.

Настроить для локального репозитория их можно командой:

bash
git config user.name "Ваше Имя"
git config user.email "ваш.email@example.com"

Проверить настройки можно так:

bash
git config --list

2. Подготовка изменений: добавление или удаление файлов

Перед commit нужно выбрать, какие изменения будут зафиксированы.

Добавление файлов в индекс (staging area)

  • Добавить конкретный файл:
    bash
    git add <имя_файла/дирректории>
  • Добавить все измененные файлы:
    bash
    git add .

Удаление файлов

  • Удалить файл из репозитория и рабочей директории:
    bash
    git rm <имя_файла>
  • Удалить файл только из репозитория (но оставить в рабочей директории):
    bash
    git rm --cached <имя_файла>

3. Выполнение фиксации (commit)

После подготовки файлов создаем коммит:

bash
git commit -m "Краткое описание изменений"

-m - сокращение от message

Если не указать -m "сообщение", Git откроет текстовый редактор для ввода сообщения.

4. Требования к сообщению commit

Сообщение коммита должно быть понятным и информативным. Рекомендации:

  • Первая строка — краткое описание (50-72 символа).
  • Дальше можно добавить подробности, если нужно.
  • Используйте повелительное наклонение: "Добавить", "Исправить", "Удалить".
  • Пример хорошего сообщения:
    Исправить ошибку валидации форм
    Добавлена проверка email, исправлена работа с пустыми полями

5. История фиксаций (commit)

Чтобы посмотреть историю коммитов, используйте:

bash
git log

Команда покажет список коммитов с их хешами, авторами и датами.

Дополнительные опции:

  • Короткая история:
    bash
    git log --oneline
  • История с графиком веток:
    bash
    git log --graph --oneline --all

6. Изменение последней фиксации (commit)

Если нужно исправить последний коммит (например, добавить забытый файл или исправить сообщение), используйте:

bash
git commit --amend

Если нужно только изменить сообщение:

bash
git commit --amend -m "Новое сообщение"

7. Отмена фиксаций (commit)

Если нужно отменить коммит, есть несколько вариантов:

  • Откатить коммит, но сохранить изменения в файлах:
    bash
    git reset --soft HEAD~1
  • Откатить коммит и удалить изменения:
    bash
    git reset --hard HEAD~1
  • Откатить 3 последних коммита и удалить изменения:
    bash
    git reset --hard HEAD~3
  • Создать новый коммит, отменяющий изменения предыдущего:
    bash
    git revert <хеш_коммита>

Дополнительные опции git commit

  • git commit -a -m "Сообщение" — автоматически добавляет и фиксирует все измененные файлы.
  • git commit --no-edit — изменяет последний коммит без редактирования сообщения.
  • git commit --allow-empty -m "Пустой коммит" — создает коммит без изменений (полезно для отметок в истории).
  • git commit --date: Позволяет указать дату и время для фиксации.
  • git commit -v: Показывает подробную информацию о фиксации, включая изменения в файлах.

Чтобы выйти из режима редактирования сообщения коммита в командной строке Windows, выполните следующие шаги:

  1. Нажмите Esc, чтобы выйти из режима вставки и перейти в командный режим.
  2. Введите :wq и нажмите Enter, чтобы сохранить изменения и выйти из редактора.
  3. Если вы хотите выйти без сохранения изменений, введите :q! и нажмите Enter.

Эти команды работают в редакторе Vim, который часто используется по умолчанию для редактирования сообщений коммитов в Git. Если у вас установлен другой редактор, команды могут отличаться.

Пример работы с фиксацией (commit)

1. Создание нового репозитория и добавление файла

bash
git init
echo "Hello, Git!" > file.txt
git add file.txt
git commit -m "Добавлен файл file.txt"

2. Изменение файла и создание нового коммита

bash
echo "Еще одна строка" >> file.txt
git add file.txt
git commit -m "Обновлен файл file.txt"

3. Просмотр истории коммитов

bash
git log --oneline

4. Откат последнего коммита

bash
git reset --soft HEAD~1

Упражнения

  1. Первый коммит
    Задача: Создайте новый репозиторий, добавьте файл и зафиксируйте изменения.
    Ожидаемый результат: git log должен показать один коммит.

  2. Изменение коммита
    Задача:

    1. Создайте коммит с файлом.
    2. Добавьте изменения в этот же файл.
    3. Используйте git commit --amend, чтобы обновить коммит.
      Ожидаемый результат: git log должен показывать один исправленный коммит (без нового коммита).
  3. Отмена последнего коммита
    Задача:

    1. Создайте два коммита.
    2. Используйте git reset --soft HEAD~1, чтобы отменить последний коммит.
    3. Проверьте состояние с git status.
      Ожидаемый результат: Последний коммит исчез, но изменения остались в рабочей области.
  4. Работа с git revert
    Задача:

    1. Создайте три коммита.
    2. Используйте git revert для отмены второго коммита.
    3. Проверьте историю с git log.
      Ожидаемый результат: В истории появится новый коммит, отменяющий второй.
  5. Создание пустого коммита
    Задача:

    1. Используйте git commit --allow-empty -m "Метка в истории".
    2. Проверьте git log.
      Ожидаемый результат: В истории появится коммит без изменений.

Contacts: teffal@mail.ru