Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, есть ли в Git-репозитории подготовленные к коммиту (staged) изменения. Вы будете использовать команду git status для просмотра подготовленных к коммиту файлов и понимания ее вывода, который показывает текущее состояние вашего репозитория, включая измененные, подготовленные к коммиту и неотслеживаемые файлы.
Кроме того, вы узнаете, как использовать команду git diff --cached для изучения конкретных изменений, находящихся в настоящее время в области подготовки к коммиту (staging area). Это позволит вам проверить различия между подготовленными к коммиту и неподготовленными к коммиту изменениями в вашем репозитории.
Используйте git status для просмотра подготовленных к коммиту файлов
На этом этапе мы снова используем команду git status, чтобы увидеть, как Git отслеживает изменения после добавления файла.
Сначала убедитесь, что вы находитесь в директории my-time-machine. Если нет, используйте команду cd:
cd ~/project/my-time-machine
Теперь создадим новый файл с именем notes.txt и добавим в него некоторое содержимое:
echo "Ideas for the future" > notes.txt
Эта команда создает файл notes.txt с указанным текстом.
Далее, скажем Git, что мы хотим отслеживать этот новый файл. Для этого используем команду git add:
git add notes.txt
Эта команда добавляет файл notes.txt в область подготовки к коммиту (staging area). Область подготовки к коммиту - это своего рода "ожидание" для изменений перед их фиксацией (коммитом).
Теперь проверим статус нашего репозитория с помощью команды git status:
git status
Вы должны увидеть вывод, похожий на следующий:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: notes.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
Обратите внимание, что в выводе теперь notes.txt отображается в разделе "Changes to be committed". Это означает, что файл находится в области подготовки к коммиту и готов к включению в следующий коммит.
Вы также можете увидеть message.txt в списке "Untracked files". Это происходит потому, что мы еще не зафиксировали изменения в файле message.txt на предыдущих шагах. Git показывает нам, что в рабочем каталоге все еще есть изменения, которые не отслеживаются для следующего коммита.
Понимание вывода команды git status является очень важным. Эта команда сообщает вам о текущем состоянии вашего репозитория, показывает, какие файлы были изменены, какие подготовлены к коммиту и какие не отслеживаются. Это помогает вам отслеживать свою работу и решать, что включать в следующую точку сохранения (коммит).
Проверьте изменения с помощью git diff --cached
На этом этапе мы научимся просматривать точные изменения, находящиеся в настоящее время в области подготовки к коммиту (staging area), с использованием команды git diff --cached.
Помните, что на предыдущем этапе мы добавили файл notes.txt в область подготовки к коммиту. Теперь давайте посмотрим, какие изменения Git готов зафиксировать (закоммитить).
Убедитесь, что вы находитесь в директории ~/project/my-time-machine:
cd ~/project/my-time-machine
Теперь выполните следующую команду:
git diff --cached
Вы должны увидеть вывод, похожий на следующий:
diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1 @@
+Ideas for the future
Этот вывод показывает разницу между областью подготовки к коммиту и последним коммитом. Поскольку это первый раз, когда мы добавляем файл notes.txt в область подготовки к коммиту, Git отображает его как новый файл.
Разберем вывод по частям:
diff --git a/notes.txt b/notes.txt: Эта строка указывает, что мы сравниваем две версии файлаnotes.txt.new file mode 100644: Это показывает, чтоnotes.txt- новый файл.index 0000000..a1b2c3d: Это внутренние идентификаторы Git для содержимого файла.--- /dev/null: Это представляет "пустое" состояние до добавления файла.+++ b/notes.txt: Это представляет текущее состояние файла в области подготовки к коммиту.@@ -0,0 +1 @@: Это заголовок, указывающий на строки, которые были изменены.-0,0означает, что в исходном (пустом) состоянии не было строк, а+1означает, что в новом состоянии добавлена одна строка.+Ideas for the future: Знак плюс+указывает, что эта строка была добавлена.
Команда git diff --cached очень полезна для просмотра подготовленных к коммиту изменений перед их фиксацией. Она позволяет вам дважды проверить, что именно вы собираетесь сохранить в истории проекта. Это помогает избежать случайного коммита нежелательных изменений.
Нажмите q, чтобы выйти из режима просмотра различий и вернуться в командную строку.
Проверьте подготовленные и неподготовленные к коммиту изменения
На этом этапе мы будем дальше исследовать разницу между подготовленными к коммиту (staged) и неподготовленными к коммиту (unstaged) изменениями, изменив файл, который уже отслеживается Git.
Сначала убедитесь, что вы находитесь в директории ~/project/my-time-machine:
cd ~/project/my-time-machine
Теперь добавим еще одну строку в наш файл notes.txt. Мы можем использовать команду echo с оператором >> для добавления текста в существующий файл:
echo "Another idea" >> notes.txt
Эта команда добавляет строку "Another idea" в конец файла notes.txt.
Проверим статус нашего репозитория еще раз:
git status
Вы должны увидеть вывод, похожий на следующий:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: notes.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: notes.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
Обратите внимание, что файл notes.txt теперь появляется в двух разделах:
- Changes to be committed (Изменения, готовые к коммиту): Это относится к версии файла
notes.txt, которую мы добавили в область подготовки к коммиту на предыдущем этапе (которая содержала только "Ideas for the future"). - Changes not staged for commit (Изменения, не подготовленные к коммиту): Это относится к изменениям, которые мы только что внесли в файл
notes.txt(добавление строки "Another idea"). Эти изменения находятся в рабочем каталоге, но еще не были добавлены в область подготовки к коммиту.
Это ключевой концепт в Git: область подготовки к коммиту содержит снимок изменений, готовых для следующего коммита, в то время как рабочий каталог содержит текущее состояние ваших файлов, включая изменения, которые еще не были подготовлены к коммиту.
Чтобы увидеть разницу между рабочим каталогом и областью подготовки к коммиту, вы можете использовать команду git diff без каких-либо опций:
git diff
Это покажет вам изменения, которые не подготовлены к коммиту. Вы должны увидеть вывод, показывающий, что добавлена строка "Another idea".
Чтобы увидеть разницу между областью подготовки к коммиту и последним коммитом (что мы видели на предыдущем этапе), используйте команду git diff --cached.
Понимание разницы между подготовленными и неподготовленными к коммиту изменениями и способов их просмотра с помощью команд git status и git diff является фундаментальным для эффективного использования Git. Это позволяет вам точно контролировать, какие изменения попадают в каждый коммит.
Резюме
В этом практическом занятии (лабораторной работе) мы научились проверять, есть ли в репозитории Git подготовленные к коммиту (staged) изменения. Мы начали с использования команды git status для просмотра текущего состояния репозитория, включая файлы, добавленные в область подготовки к коммиту (staging area). Мы увидели, как git status четко показывает, какие файлы относятся к "Changes to be committed" (изменения, готовые к коммиту).
Затем мы изучили команду git diff --cached для конкретного просмотра различий между подготовленными к коммиту изменениями и последним коммитом. Это позволило нам увидеть точные изменения в содержимом, готовые к коммиту. Наконец, мы закрепили различие между подготовленными и неподготовленными к коммиту изменениями, понимая, что git status дает обзор, в то время как git diff --cached показывает детальное содержимое подготовленных к коммиту изменений.



