Проверка статуса Git для примененных изменений
На этом этапе мы рассмотрим, как команда stash
в Git взаимодействует с рабочей директорией и как проверить статус репозитория после применения стэша.
Сначала убедимся, что мы находимся в директории нашего проекта. Откройте терминал и перейдите в директорию my-time-machine
:
cd ~/project/my-time-machine
Теперь создадим новый файл и добавим в него некоторое содержимое, чтобы имитировать наличие неподтвержденных изменений:
echo "This is a new feature." > feature.txt
echo "Adding some more content." >> message.txt
Теперь мы создали новый файл feature.txt
и изменили существующий файл message.txt
. Посмотрим, как Git воспринимает эти изменения, используя команду git status
:
git status
Вы должны увидеть вывод, указывающий, что файл feature.txt
не отслеживается, а файл message.txt
был изменен:
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
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
no changes added to commit (use "git add" and/or "git commit -a")
Теперь сохраним эти изменения в стэш. Сохранение в стэш аналогично временному откладыванию текущей работы, чтобы можно было переключиться на что-то другое без подтверждения неполных изменений.
git stash save "Work in progress"
Вы должны увидеть вывод, подтверждающий, что стэш был сохранен:
Saved working tree and index state On master: Work in progress
Теперь ваша рабочая директория должна быть "чистой", как если бы вы не делали эти изменения. Вы можете проверить это с помощью команды git status
:
git status
Вывод должен показать, что рабочая директория чистая:
On branch master
nothing to commit, working tree clean
Теперь применим только что созданный стэш. Применение стэша возвращает сохраненные изменения обратно в рабочую директорию.
git stash apply
Вы должны увидеть вывод, указывающий, что изменения были применены:
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
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9)
Наконец, проверим статус с помощью команды git status
еще раз, чтобы увидеть состояние нашей рабочей директории после применения стэша.
git status
Вывод должен показать, что изменения из стэша теперь вернулись в рабочую директорию и отображаются как измененные и неотслеживаемые файлы, так же, как и до сохранения их в стэш. Это подтверждает, что команда git stash apply
возвращает изменения обратно без автоматического добавления их в индекс или подтверждения.