Skip to content

Latest commit

 

History

History
171 lines (115 loc) · 9.82 KB

first-commit.md

File metadata and controls

171 lines (115 loc) · 9.82 KB

Фиксация изменений. Первый коммит

Для продолжения дальнейшей работы необходимо понять, что такое состояние проекта и состояние репозитория в Git.

Состояние проекта - это структура файлов и папок в проекте и их содержимое. Также сюда относятся и атрибуты файлов: дата создания, изменения, права доступа и т. д.

В примере с копиями папки, каждая копия в паре с записью о ней в файле changelog.txt - это фиксация определенного состояния проекта. В терминах систем контроля версий это называется коммит.

10-04-2022 13:25 - Исправил баги
11-04-2022 17:51 - Добавил возможность поиска

В Git состоянием репозитория называется разница между текущим состоянием файлов и последним коммитом (зафиксированным состоянием). Это новые, измененные и удаленные файлы, их содержимое и атрибуты, включая права доступа.

В Git есть две команды, которые позволяют понять текущее состояние проекта:

git log - история коммитов

git status - собственно, состояние репозитория, отличие текущих файлов от предыдущего коммита.

В прошлом уроке мы инициализировали репозиторий в папке проекта. Т. к. у нас нет коммитов, т. е. мы не делали фиксаций состояния, все файлы в папке новые.

Давайте попробуем посмотреть историю изменений в только что созданном репозитории. Для этого выполните команду:

git log

Вы увидите ошибку:

fatal: ваша текущая ветка «master» еще не содержит ни одного коммита

Это происходит потому что мы еще не фиксировали состояние проекта, т. е. у нас нет ни одного коммита. Возможно, вместо слова master у вас будет написано main.

Попробуем посмотреть текущий статус репозитория с помощью команды git status:

На ветке master

Еще нет коммитов

Неотслеживаемые файлы:
  (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
        index.html
        script.js
        styles.css

ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add», чтобы отслеживать их)

Как в Git зафиксировать текущее состояние репозитория?

Для начала нужно указать, какие файлы мы хотим зафиксировать. В Git для этого есть спициальная область, куда можно добавлять файлы, а потом сказать Git, что нужно зафиксировать их текущее состояние (т. е. сделать коммит). Эта область называется индекс (также ее называют “область подготовленных файлов” или “staging area”).

Индекс можно сравнить с папкой, куда мы копируем нужные нам файлы. Можно добавлять файлы и папки в индекс, убирать их из индекса, либо полностью очистить его.

Для добавления в индекс в Git есть команда git add. Можно выбрать отдельные файлы или папки, либо добавить все изменения. Ниже приведены примеры команд, которые можно выполнить:

# добавляем определенный файл или папку
git add index.html
# добавляем еще один файл
git add script.js
# добавляем текущую папку, включая все файлы и папки в ней
git add .

Попробуем добавить файл index.html:

git add index.html

Теперь посмотрим статус репозитория с помощью команды git status.

На ветке master

Еще нет коммитов

Изменения, которые будут включены в коммит:
  (используйте «git rm --cached <файл>…», чтобы убрать из индекса)
        новый файл:    index.html

Неотслеживаемые файлы:
  (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
        script.js
        styles.css

В данном случае мы хотим зафиксировать все изменения, поэтому выполним команду git add -A и снова посмотрим статус:

На ветке master

Еще нет коммитов

Изменения, которые будут включены в коммит:
  (используйте «git rm --cached <файл>…», чтобы убрать из индекса)
        новый файл:    index.html
        новый файл:    script.js
        новый файл:    styles.css

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

git commit --message "Первый коммит"

Флаг --message указывает сообщение к коммиту. Можно записать его сокращенную версию - -m:

git commit -m "Первый коммит"

После коммита индекс очищается, т. к. этот список файлов больше не нужен.

Смотрим статус:

На ветке master
нечего коммитить, нет изменений в рабочем каталоге

Попробуем теперь посмотреть историю коммитов с помощью команды git log:

commit 087b541c6ce7d06b7af70f831dcc434e06c8743b (HEAD -> master)
Author: Muhammad Imangazaliev <[email protected]>
Date:   Mon Apr 11 23:07:58 2022 +0300

    Первый коммит

Подробнее о том, что означает написанное здесь, мы разберем в следующей главе.

Примечание: строка "087b541c6ce7d06b7af70f831dcc434e06c8743b" в вашем случай будет отличаться.

Резюме

  • Фиксация изменений называется коммит. При создании коммита нужно указать сообщение, которое обычно описывает изменения в нем.
  • Создание коммита делается в два шага:
    1. Указание файлов для коммита с помощью команды git add. Эта команда добавляет файлы в специальный список - индекс.
    2. Выполнение команды git commit для фиксации выбранных изменений (файлов, которые находятся в индексе).

Практическое задание

  1. Создайте папку и инициализируйте в нем репозиторий.
  2. Добавьте в репозиторий (папку) несколько файлов (желательно от 5 и разных типов: текст, изображения, документы).
  3. Проверьте статус репозитория.
  4. Создайте коммит с произвольным сообщением.
  5. Посмотрите историю коммитов.

Дополнительное задание

  1. Внесите изменения в репозиторий:
    1. Измените содержимое какого-нибудь текстового файла или нескольких файлов
    2. Добавьте несколько новых файлов
    3. Удалите какой-нибудь из файлов, который вы зафиксировали в предыдущем коммите
    4. Переименуйте какой-нибудь из файлов, который вы зафиксировали в предыдущем коммите
  2. Посмотрите статус репозитория и попытайтесь понять, что он показывает.
  3. Создайте новый коммит.
  4. Посмотрите историю коммитов.

← Создание репозитория | Коммиты, продолжение →