Как проверить, есть ли временно сохраненные изменения (stashed changes) в репозитории Git

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

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

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, есть ли в Git-репозитории временно сохраненные изменения (stashed changes). Мы рассмотрим команду git stash list для просмотра существующих временных сохранений (stashes) и используем git status для проверки состояния рабочего каталога.

Следуя шагам этого руководства, вы поймете, как определить, были ли вы временно сохранили изменения с помощью команды git stash, и убедитесь, что рабочее дерево чистое, когда нет ни временных сохранений (stashes), ни некоммиченных изменений.


Skills Graph

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

Запуск git stash list для проверки

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

git stash временно сохраняет ваши некоммиченные изменения (как подготовленные к коммиту (staged), так и неподготовленные (unstaged)) и возвращает рабочий каталог в состояние, соответствующее коммиту HEAD. Это похоже на то, что вы кладете свою текущую работу в безопасное место, чтобы можно было перейти к чему-то другому, а потом вернуться к ней позже.

Давайте начнем с проверки, есть ли у вас какие-либо временно сохраненные изменения (stashed changes). В терминале убедитесь, что вы находитесь в каталоге ~/project/my-time-machine и выполните следующую команду:

cd ~/project/my-time-machine
git stash list

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

## Если нет сохраненных временных сохранений, вы, возможно, не увидите никакого вывода или увидите сообщение, подобное этому:
## No stashed changes found.

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

Проверка с помощью git status

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

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

git status

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

On branch master
nothing to commit, working tree clean

Этот вывод подтверждает, что в вашем репозитории нет некоммиченных изменений. Рабочий каталог соответствует последнему коммиту на ветке master. Это состояние, которое вы ожидаете увидеть после создания коммита или после применения временного сохранения (stash) и разрешения всех конфликтов.

Понимание вывода команды git status является важным для управления вашим Git-воркфлоу. Она сообщает вам, какие файлы были изменены, какие подготовлены к следующему коммиту и какие не отслеживаются.

Тестирование репозитория без временных сохранений (stash)

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

Чтобы продемонстрировать, как работает git stash, нам сначала нужно внести некоторые изменения в наш репозиторий. Давайте изменим файл message.txt, который мы создали в предыдущей лабораторной работе.

Убедитесь, что вы находитесь в каталоге ~/project/my-time-machine. Откройте файл message.txt с помощью редактора nano:

nano message.txt

Добавьте новую строку в файл, например:

Hello, Future Me
This is a new line.

Сохраните файл, нажав Ctrl + S, и выйдите из nano, нажав Ctrl + X.

Теперь давайте еще раз проверим статус нашего репозитория:

git status

Вы должны увидеть вывод, показывающий, что файл 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

no changes added to commit (use "git add" and/or "git commit -a")

Этот вывод показывает, что мы внесли изменения в файл message.txt, но эти изменения еще не подготовлены к коммиту. Это идеальный сценарий для использования команды git stash. На следующем этапе мы используем git stash для временного сохранения этих изменений.

Резюме

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

Затем мы использовали команду git status, чтобы проверить состояние нашего рабочего каталога. Чистое рабочее дерево, как показывает вывод команды git status, подтверждает, что в репозитории нет некоммиченных изменений. Эти две команды являются основными для понимания текущего состояния вашего репозитория Git и управления временно сохраненными изменениями.