Git Stash

Тема дорожной карты · Изучи Git

Stash — это временная полка для хранения незакоммиченных изменений, что позволяет переключаться между ветками без необходимости коммитировать полусделанную работу. Стек сташирования поддерживает несколько записей (stash@{0}, stash@{1}, ...), каждая из которых может иметь своё уникальное сообщение, добавляемое через команду git stash push -m "wip-rate-limit". Эта функциональность особенно полезна для временного хранения неоконченных изменений, когда требуется переключиться на другую задачу или ветку.

Как это работает

Git Stash временно откладывает незакоммиченные изменения, сохраняя текущее состояние рабочей директории и индекса. Команда git stash (или git stash push -m "msg") сохраняет все незакоммиченные изменения в стек сташирования. Команда git stash list выводит список всех сохранённых сташирований, а команда git stash pop применяет последний сташ и удаляет его из стека. Команда git stash apply применяет последний сташ без его удаления из стека. Команда git stash branch <name> создаёт новую ветку из последнего сташа, что удобно, если исходная ветка ушла далеко. Неотслеживаемые файлы требуют использования опции -u для включения их в сташ.

Когда применять

Stash особенно полезен, когда требуется временно отложить работу в середине правки, например, для переключения на другой проект или для исправления критического бага. В таких случаях важно добавлять сообщение к сташированию через параметр -m, чтобы можно было легко идентифицировать содержимое каждого сташирования. Например, сообщение WIP on feature/foo шесть сташирований спустя будет бесполезным, так как его смысл будет непонятен. Вместо сташирования рекомендуется делать коммиты с меткой "WIP" (Work In Progress), если работа может быть потеряна. Стеш, напротив, легко забывается, и команда git stash clear удаляет все сташирования из стека.

Типичные ошибки

Одной из распространённых ошибок при использовании Git Stash является забывание о существовании сташирований, особенно если они были созданы неделями ранее. Например, через неделю после создания сташирования, пользователь может забыть, что именно было сохранено в stash@{4}. Другой распространённой ошибкой является использование команды git stash drop вместо git stash apply, что может привести к потере изменений, так как команда drop удаляет сташ из стека без его применения. Также проблема может возникнуть, если сташирование было сделано между крупными прыжками веток, что может привести к криптичным конфликтам при попытке применить сташ с помощью команды pop.

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…