Как проверить, был ли применен Git-стэш

GitGitBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, были ли изменения из Git-стэша успешно применены в рабочую директорию. Мы рассмотрим взаимодействие команды git stash и статуса репозитория, показывая, как проверить примененные изменения и отличить их от неподтвержденных (непримененных) стэшей.

Путем выполнения практических шагов вы будете использовать команду git status для наблюдения за состоянием рабочей директории до и после сохранения изменений в стэш и их применения. Вы также будете использовать команду git stash list для управления и проверки записей в стэше, чтобы уверенно определять статус применения сохраненных в стэше изменений.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/DataManagementGroup -.-> git/restore("Revert Files") subgraph Lab Skills git/status -.-> lab-560105{{"Как проверить, был ли применен Git-стэш"}} git/stash -.-> lab-560105{{"Как проверить, был ли применен Git-стэш"}} git/restore -.-> lab-560105{{"Как проверить, был ли применен Git-стэш"}} end

Проверка статуса 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 возвращает изменения обратно без автоматического добавления их в индекс или подтверждения.

Использование команды git stash list для проверки

На этом этапе мы узнаем, как просмотреть список сохраненных стэшей с помощью команды git stash list. Эта команда полезна для отслеживания временной работы.

Убедитесь, что вы по-прежнему находитесь в директории ~/project/my-time-machine.

На предыдущем этапе мы создали стэш. Посмотрим, как он отображается в списке стэшей. Введите следующую команду:

git stash list

Вы должны увидеть вывод, похожий на следующий:

stash@{0}: On master: Work in progress

Этот вывод показывает, что у нас есть один сохраненный стэш. stash@{0} - это идентификатор этого конкретного стэша. Число в фигурных скобках указывает его позицию в списке стэшей (0 - самый свежий). "On master" сообщает, на какой ветке мы находились при создании стэша, а "Work in progress" - это сообщение, которое мы указали при сохранении стэша.

Если у вас было несколько стэшей, они были бы перечислены здесь, причем stash@{0} был бы самым свежим, stash@{1} - следующим по свежести и так далее.

Команда git stash list является важной для управления стэшами. Она позволяет вам увидеть, какие стэши у вас есть, и помогает вам определить тот, который вы хотите применить или удалить.

Понимание того, как выводить список стэшей, является первым шагом в эффективном использовании функции стэша для управления незавершенной работой.

Тестирование неподтвержденных стэшей

На этом этапе мы убедимся, что применение стэша не удаляет его из списка стэшей. Это важное различие между командами git stash apply и git stash pop.

Убедитесь, что вы по-прежнему находитесь в директории ~/project/my-time-machine.

На предыдущих этапах мы создали стэш и затем применили его. Проверим список стэшей еще раз, чтобы убедиться, что стэш по-прежнему там.

git stash list

Вы должны увидеть такой же вывод, как и раньше:

stash@{0}: On master: Work in progress

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

Если вы хотите применить стэш и одновременно удалить его из списка, вы должны использовать команду git stash pop вместо git stash apply. Команда pop аналогична применению изменений и последующему немедленному удалению стэша.

Демонстрируем команду git stash pop. Сначала убедитесь, что ваша рабочая директория чистая. Поскольку мы применили стэш, у нас есть неподтвержденные изменения. Мы можем либо зафиксировать их, либо отбросить для данной демонстрации. Отбросим их, чтобы вернуться в чистый статус.

git restore .

Эта команда отбрасывает все изменения в рабочей директории. Теперь проверим статус:

git status

Вывод должен показать, что рабочая директория чистая:

On branch master
nothing to commit, working tree clean

Теперь используем команду git stash pop для применения стэша и удаления его из списка.

git stash pop

Вы должны увидеть вывод, указывающий, что стэш был применен и затем удален:

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 stash list

На этот раз вы не должны увидеть никакого вывода, что означает, что список стэшей пуст:

Это подтверждает, что команда git stash pop удаляет стэш после его применения, в то время как команда git stash apply оставляет его в списке. Понимание различия между командами apply и pop является важным для эффективного управления стэшами.

Резюме

В этом практическом занятии мы научились проверять, успешно ли применен Git-стэш к рабочей директории. Мы начали с создания и сохранения изменений в проекте, а затем использовали команду git status для наблюдения за состоянием рабочей директории до и после сохранения и применения стэша. Чистая рабочая директория после применения стэша свидетельствует о том, что изменения были успешно восстановлены.

Мы также изучили использование команды git stash list для просмотра списка доступных стэшей и подтверждения того, что стэш удаляется из списка после его применения с помощью команд git stash apply или git stash pop. Это дает четкий способ проверить, что конкретный стэш больше не ожидает применения.