Как проверить, пуст ли стэш (хранилище временных изменений) в Git

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

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

Введение

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

Сначала вы используете команду git stash show для проверки изменений в стэше, включая просмотр сводки и подробного дифференциала (различий). Затем вы узнаете, как использовать git stash list для проверки наличия и содержимого стэшей. Наконец, вы протестируете эти команды с непустыми стэшами, чтобы закрепить свои знания.


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/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") subgraph Lab Skills git/status -.-> lab-560106{{"Как проверить, пуст ли стэш (хранилище временных изменений) в Git"}} git/diff -.-> lab-560106{{"Как проверить, пуст ли стэш (хранилище временных изменений) в Git"}} git/stash -.-> lab-560106{{"Как проверить, пуст ли стэш (хранилище временных изменений) в Git"}} end

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

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

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

Сначала убедитесь, что вы находитесь в директории проекта:

cd ~/project/my-time-machine

Теперь создайте новый файл с именем notes.txt и добавьте в него некоторое содержимое:

echo "Important notes for the future." > notes.txt

Проверьте статус, чтобы увидеть новый файл:

git status

Вы должны увидеть, что notes.txt отображается как неотслеживаемый файл.

Теперь сохраним эти изменения в стэше. Это позволит сохранить изменения без коммита и очистить рабочую директорию:

git stash save "Add important notes"

Вы должны увидеть вывод, указывающий на то, что изменения были сохранены и рабочая директория очищена.

Теперь, когда у нас есть стэш, мы можем проверить его содержимое с помощью команды git stash show. По умолчанию git stash show показывает сводку изменений в последнем стэше.

Выполните команду:

git stash show

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

 notes.txt | 1 +
 1 file changed, 1 insertion(+)

Этот вывод сообщает нам, что один файл (notes.txt) был изменен и в него добавлена одна строка.

Чтобы увидеть фактические изменения в содержимом (дифференциал, diff), вы можете добавить опцию -p или --patch:

git stash show -p

Это покажет вам дифференциал изменений в стэше, аналогично тому, как работает команда git diff. Вы должны увидеть что-то вроде этого:

diff --git a/notes.txt b/notes.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/notes.txt
@@ -0,0 +1 @@
+Important notes for the future.

Этот вывод показывает, что был создан новый файл notes.txt и добавлена строка "Important notes for the future."

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

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

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

Убедитесь, что вы по-прежнему находитесь в директории проекта:

cd ~/project/my-time-machine

На предыдущем этапе мы создали один стэш. Используем команду git stash list, чтобы увидеть его.

Выполните команду:

git stash list

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

stash@{0}: On master: Add important notes

Разберем этот вывод:

  • stash@{0}: Это имя стэша. stash указывает, что это стэш, а {0} - это индекс стэша в списке. Самый свежий стэш всегда имеет индекс {0}.
  • On master: Это сообщает, на какой ветке вы находились при создании стэша.
  • Add important notes: Это сообщение, которое мы указали при создании стэша с помощью команды git stash save. Если вы не укажете сообщение, Git автоматически сгенерирует его на основе текущего коммита и измененных файлов.

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

Создадим еще один стэш, чтобы увидеть, как изменится список.

Сначала изменим файл message.txt, который мы создали в предыдущей лабораторной работе:

echo "Adding another line for testing." >> message.txt

Теперь сохраним эти новые изменения в стэше:

git stash save "Add another line to message"

Запустим команду git stash list еще раз:

git stash list

Теперь вы должны увидеть два стэша:

stash@{0}: On master: Add another line to message
stash@{1}: On master: Add important notes

Обратите внимание, что новый стэш теперь имеет индекс {0}, а предыдущий стэш переместился на индекс {1}. Git всегда помещает самый свежий стэш в начало списка с индексом {0}.

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

Тестирование непустых стэшей (хранилищ временных изменений)

На этом этапе мы потренируемся использовать команды git stash show и git stash list с несколькими стэшами, чтобы укрепить наше понимание.

Убедитесь, что вы находитесь в директории проекта:

cd ~/project/my-time-machine

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

git stash list

Вы должны увидеть:

stash@{0}: On master: Add another line to message
stash@{1}: On master: Add important notes

Теперь проверим содержимое первого стэша (stash@{0}). Мы можем указать, какой стэш показать, добавив его индекс к команде:

git stash show stash@{0}

Это покажет сводку изменений в самом новом стэше, то есть в том, где мы добавили строку в файл message.txt. Вывод должен быть похожим на следующий:

 message.txt | 1 +
 1 file changed, 1 insertion(+)

Чтобы увидеть дифференциал (diff) для этого стэша, используйте опцию -p:

git stash show -p stash@{0}

Вы должны увидеть дифференциал, показывающий добавленную строку в файле message.txt.

Теперь проверим второй стэш (stash@{1}). Это стэш, где мы создали файл notes.txt.

git stash show stash@{1}

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

 notes.txt | 1 +
 1 file changed, 1 insertion(+)

И чтобы увидеть дифференциал для этого стэша:

git stash show -p stash@{1}

Это покажет дифференциал для создания файла notes.txt.

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

В следующих лабораторных работах мы научимся применять и управлять этими стэшами.

Резюме

В этой лабораторной работе мы научились проверять содержимое стэша (хранилища временных изменений) в Git с помощью команды git stash show. Сначала мы создали простой файл и сохранили изменения в стэше, чтобы иметь данные для работы. Затем мы использовали команду git stash show, чтобы увидеть сводку изменений в самом новом стэше, включая количество измененных файлов и добавленных/удаленных строк. Мы также изучили опцию -p или --patch для команды git stash show, которая позволяет просмотреть фактический дифференциал (diff) изменений в стэше, что позволяет увидеть конкретные строки, которые были добавлены, изменены или удалены. Эта команда является ценным инструментом для быстрого понимания содержимого стэша без необходимости его применения.