Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.

Вернуться к обычному просмотру страницы.

Коммиты (commit)

Работа с коммитами в Git

В Git, коммит (или commit) — это ключевое понятие, представляющее собой снимок (snapshot) вашего проекта в определённый момент времени. Коммит фиксирует состояние файлов в репозитории, сохраняя изменения, которые были сделаны с момента последнего коммита.

Основные характеристики коммита

  1. Снимок изменений: Коммит сохраняет текущее состояние файлов в репозитории, создавая снимок всех отслеживаемых файлов.
  2. Уникальный идентификатор: Каждый коммит имеет уникальный SHA-1 хэш, который идентифицирует его. Этот хэш позволяет однозначно ссылаться на конкретный коммит.
  3. Сообщение коммита: Каждый коммит сопровождается сообщением, описывающим внесённые изменения. Это сообщение помогает понять, что было изменено и почему.
  4. Метаданные: Коммит включает информацию о времени создания, авторе и родительских коммитах (если есть).

Создание коммита

Процесс создания коммита в Git включает несколько шагов:

  1. Добавление изменений в индекс (staging area): Перед тем как создать коммит, необходимо добавить изменения в индекс.

    git add <файл>        # Добавление конкретного файла
    git add .             # Добавление всех изменений в текущей директории
    
  2. Создание коммита: После добавления изменений в индекс, создайте коммит с помощью команды git commit.

    git commit -m "Сообщение коммита"
    

    Опция -m позволяет указать сообщение коммита непосредственно в командной строке. Это сообщение должно быть информативным и описывать изменения, которые были внесены.

Пример использования

  1. Просмотр текущего состояния репозитория:

    git status
    
  2. Добавление изменений в индекс:

    git add example.txt
    
  3. Создание коммита с сообщением:

    git commit -m "Добавлен новый файл example.txt с примером использования"
    

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

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

git log

Эта команда покажет список всех коммитов с их SHA-1 хэшами, авторами, датами и сообщениями коммитов.

Полезные команды

  • Просмотр краткой истории коммитов:

    git log --oneline
    
  • Просмотр изменений, внесённых в конкретный коммит:

    git show <SHA-1 хэш коммита>
    
  • Отмена последнего коммита (с сохранением изменений в рабочем каталоге):

    git reset --soft HEAD~1
    

Примечание

Коммиты являются основным механизмом для сохранения изменений и ведения истории в Git. Они позволяют отслеживать, кто и когда внёс изменения, а также возвращаться к предыдущим состояниям проекта при необходимости.

1 - Как изменить последний коммит?

Шаг 1: Откройте терминал или командную строку

Откройте терминал (на Mac или Linux) или командную строку (на Windows).

Шаг 2: Убедитесь, что все изменения закоммичены

Убедитесь, что все ваши изменения добавлены в индекс (staged). Если у вас есть несохранённые изменения, которые вы хотите включить в последний коммит, добавьте их:

git add <файл1> <файл2> ...

Для добавления всех изменений:

git add .

Шаг 3: Выполните команду для изменения последнего коммита

Используйте команду git commit --amend, чтобы изменить последний коммит. Это откроет редактор, где вы сможете изменить сообщение коммита, а также включит изменения, которые были добавлены в индекс.

git commit --amend

Шаг 4: Измените сообщение коммита (если необходимо)

Редактор откроется с сообщением последнего коммита. Измените сообщение коммита, если это необходимо. После внесения изменений сохраните файл и закройте редактор (в большинстве текстовых редакторов это можно сделать с помощью :wq для Vim или Ctrl+X, затем Y и Enter для Nano).

Шаг 5: Сделайте push изменений (если необходимо)

Если вы уже отправили коммит в удалённый репозиторий, вам нужно будет использовать --force для отправки изменённого коммита:

git push --force origin <ваша-ветка>

Пример:

git push --force origin main

Полезные команды

  • Проверка состояния репозитория:

    git status
    
  • Просмотр истории коммитов:

    git log
    
  • Отмена последнего коммита (если необходимо):

    git reset --soft HEAD~1
    

Теперь вы знаете, как изменить последний коммит в Git! 👍🏼

2 - Как объединить несколько коммитов в один?

Шаг 1: Откройте терминал или командную строку

Откройте терминал (на Mac или Linux) или командную строку (на Windows).

Шаг 2: Определите, сколько коммитов вы хотите объединить

Посмотрите историю коммитов, чтобы определить, сколько коммитов вы хотите объединить.

git log --oneline

Это покажет список ваших последних коммитов в краткой форме.

Шаг 3: Начните интерактивный rebase

Используйте команду git rebase -i (интерактивный rebase) и укажите количество коммитов, которые вы хотите объединить. Например, если вы хотите объединить последние три коммита, используйте:

git rebase -i HEAD~3

Шаг 4: Объедините коммиты

После выполнения команды git rebase -i, откроется текстовый редактор со списком коммитов. Для каждого коммита, который вы хотите объединить с предыдущим, замените pick на squash или сокращенно s (второй и последующие коммиты, которые вы хотите объединить).

pick <hash> Коммит 1
squash <hash> Коммит 2
squash <hash> Коммит 3

Сохраните файл и закройте редактор.

Шаг 5: Отредактируйте сообщение объединённого коммита

После закрытия редактора откроется другой редактор, где вы сможете изменить сообщение объединённого коммита. Оставьте или отредактируйте сообщение коммита по вашему усмотрению. После внесения изменений сохраните файл и закройте редактор.

Шаг 6: Завершите rebase

После закрытия редактора Git завершит процесс rebase и объединит указанные коммиты в один.

Шаг 7: Сделайте push изменений (если необходимо)

Если вы уже отправили коммиты в удалённый репозиторий, вам нужно будет использовать --force для отправки объединённого коммита:

git push --force origin <ваша-ветка>

Пример:

git push --force origin main

Полезные команды

  • Просмотр истории коммитов:

    git log --oneline
    
  • Отмена интерактивного rebase (если возникли проблемы):

    git rebase --abort
    

Теперь вы знаете, как объединить несколько коммитов в один в Git 😎