Тестирование неизмененных файлов
На предыдущих этапах мы увидели, как работают команды git status
и git diff
, когда файл был изменен. Но что произойдет, если мы запустим эти команды, когда нет никаких изменений?
Давайте узнаем! Убедитесь, что вы находитесь в директории ~/project/my-time-machine
.
Сначала запустите команду git status
:
git status
Поскольку с момента последней проверки статуса мы не внесли никаких изменений, вы должны увидеть такой же вывод, как и раньше, который показывает, что файл message.txt
был изменен, но изменения не были добавлены в staging area (индекс):
On branch master
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: message.txt
no changes added to commit (use "git add" and/or "git commit -a")
Теперь давайте попробуем снова запустить команду git diff
:
git diff
Вы должны увидеть такой же вывод сравнения, как и раньше, который показывает различия между текущим файлом и последним коммитом:
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+P.S. Hope you're doing well!
Это подтверждает, что команды git status
и git diff
показывают текущее состояние вашего рабочего каталога по отношению к последнему коммиту, независимо от того, сколько раз вы запускаете эти команды без внесения дополнительных изменений.
Теперь давайте добавим изменения, которые мы внесли в файл message.txt
, в staging area с помощью команды git add
:
git add message.txt
Запустите команду git status
еще раз:
git status
Вывод изменится и покажет, что изменения теперь добавлены в staging area:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
Обратите внимание, что команда git status
теперь показывает "Changes to be committed" (Изменения, готовые к коммиту). Это означает, что изменения находятся в staging area и готовы к следующему коммиту.
А как насчет команды git diff
теперь? Давайте попробуем:
git diff
На этот раз команда git diff
не выведет ничего. Почему? Потому что когда вы запускаете команду git diff
без аргументов, она сравнивает ваш рабочий каталог с staging area. Поскольку мы только что добавили изменения в staging area, рабочий каталог и staging area идентичны.
Чтобы увидеть различия между staging area и последним коммитом, вы должны использовать команду git diff --staged
. Давайте попробуем:
git diff --staged
Это покажет различия в изменениях, которые в настоящее время находятся в staging area, то есть строку, которую мы добавили:
diff --git a/message.txt b/message.txt
index a1b2c3d..e4f5g6h 100644
--- a/message.txt
+++ b/message.txt
@@ -1 +1,2 @@
Hello, Future Me
+P.S. Hope you're doing well!
Понимание различия между git diff
(рабочий каталог против staging area) и git diff --staged
(staging area против последнего коммита) является ключевым понятием в Git. Это помогает вам управлять своими изменениями перед тем, как зафиксировать их.
Нажмите q
, чтобы выйти из режима просмотра различий, если он появится.