Для продолжения дальнейшей работы необходимо понять, что такое состояние проекта и состояние репозитория в 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" в вашем случай будет отличаться.
- Фиксация изменений называется коммит. При создании коммита нужно указать сообщение, которое обычно описывает изменения в нем.
- Создание коммита делается в два шага:
- Указание файлов для коммита с помощью команды
git add
. Эта команда добавляет файлы в специальный список - индекс. - Выполнение команды
git commit
для фиксации выбранных изменений (файлов, которые находятся в индексе).
- Указание файлов для коммита с помощью команды
- Создайте папку и инициализируйте в нем репозиторий.
- Добавьте в репозиторий (папку) несколько файлов (желательно от 5 и разных типов: текст, изображения, документы).
- Проверьте статус репозитория.
- Создайте коммит с произвольным сообщением.
- Посмотрите историю коммитов.
- Внесите изменения в репозиторий:
- Измените содержимое какого-нибудь текстового файла или нескольких файлов
- Добавьте несколько новых файлов
- Удалите какой-нибудь из файлов, который вы зафиксировали в предыдущем коммите
- Переименуйте какой-нибудь из файлов, который вы зафиксировали в предыдущем коммите
- Посмотрите статус репозитория и попытайтесь понять, что он показывает.
- Создайте новый коммит.
- Посмотрите историю коммитов.