Git stash: что это такое и как правильно использовать
<p>Git stash — это команда в системе контроля версий Git, которая позволяет временно сохранять текущее состояние рабочей директории и индекса для переключения на другую ветку или выполнения других операций без необходимости фиксировать изменения.</p>
<p>Когда мы работаем над проектом в Git, иногда возникают ситуации, когда у нас есть незаконченные изменения, но мы хотим переключиться на другую ветку. Например, мы можем обнаружить ошибку в коде или хотеть проверить работу на другой функциональной ветке. В таких случаях команда git stash может быть очень полезна.</p>
<p>Git stash работает следующим образом. Когда мы выполняем команду git stash, Git сохраняет изменения, которые у нас есть в рабочей директории и индексе, и возвращает нам чистую рабочую директорию, без внесенных изменений. Затем мы можем переключиться на другую ветку или выполнить другую операцию.</p>
<p>Чтобы применить сохраненные изменения, мы можем использовать команду git stash apply. Она возвращает сохраненные изменения в рабочую директорию и индекс, и мы можем продолжить работу с ними. Мы также можем использовать команду git stash pop, которая возвращает сохраненные изменения, но также удаляет их из стека stash.</p>
<pre><code class="hljs-shell"># Создаем новый репозиторий Git
$ git init
# Создаем файл example.txt
$ touch example.txt
# Добавляем файл в индекс
$ git add example.txt
# Вносим изменения в файл
$ echo "Hello, World!" > example.txt
# Создаем stash
$ git stash
# Проверяем состояние рабочей директории
$ git status
# Результат вывода:
# On branch master
# nothing to commit, working tree clean
# Создаем новую ветку для выполнения другой задачи
$ git checkout -b new_branch
# Обновляем файл example.txt в новой ветке
$ echo "New feature" > example.txt
# Проверяем состояние рабочей директории
$ git status
# Результат вывода:
# On branch new_branch
# 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: example.txt
# Применяем сохраненные изменения
$ git stash apply
# Проверяем состояние рабочей директории
$ git status
# Результат вывода:
# On branch new_branch
# Changes to be committed:
# (use "git restore --staged <file>..." to unstage)
# modified: example.txt
</code></pre>
<p>В этом примере мы создали новый репозиторий Git и добавили файл example.txt в индекс. Затем мы внесли изменения в файл, создали stash и создали новую ветку new_branch. В новой ветке мы обновили файл example.txt. После применения сохраненных изменений наш файл обновился в рабочей директории.</p>
<p>Git stash очень удобен, когда у нас есть незаконченные изменения, и нам нужно временно переключиться на другую задачу или ветку. Это помогает нам сохранить наш прогресс и продолжить работу с ним позже, без необходимости фиксировать и коммитить изменения.</p>
<p>Надеюсь, данная информация была полезна. Если у вас есть еще вопросы, обращайтесь!</p>