Как временно сохранять изменения в коде в локальном хранилище Git
Разбор вопроса «Как временно сохранять изменения в коде в локальном хранилище Git» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Как временно сохранять изменения в коде в локальном хранилище Git
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер хочет убедиться, что кандидат понимает, как временно сохранять изменения в Git без создания коммитов, и знает основные команды для работы с stash. Также важно, чтобы кандидат мог объяснить практическое применение этой функциональности в рабочих процессах.
Ключевые тезисы
- Использовать команду
git stashдля временного сохранения изменений без коммита. Это особенно полезно, когда нужно переключиться на другую ветку, но текущие изменения ещё не готовы для коммита. - Команда
git stash save "описание изменений"позволяет добавить описание к временно сохранённым изменениям, что упрощает их идентификацию позже. - Для просмотра списка всех сохранённых изменений использовать
git stash list. Это поможет выбрать нужный stash для восстановления. - Восстановить изменения можно командой
git stash apply(без удаления из stash) илиgit stash pop(с удалением из stash). Указать конкретный stash можно через его индекс, например,git stash apply stash@{1}.
Подробный ответ
Команда git stash — это мощный инструмент Git для временного сохранения изменений в рабочей директории и индексе без создания коммита. Это особенно полезно, когда вам нужно быстро переключиться на другую ветку, но текущие изменения ещё не готовы для коммита. Stash сохраняет изменения в стеке, что позволяет вернуться к ним позже. Основные команды: git stash save (или просто git stash) для сохранения, git stash list для просмотра списка сохранённых изменений, git stash apply или git stash pop для восстановления. Разница между apply и pop в том, что pop удаляет изменения из стека после применения, а apply оставляет их там. Также можно указывать конкретный stash по индексу, например, git stash apply stash@{1}.
Практические примеры
Пример 1
Вы работаете над новой функцией в ветке feature/login, но вам срочно нужно переключиться на ветку main для исправления бага. Выполните git stash save "WIP: login form changes", чтобы сохранить текущие изменения. После исправления бага вернитесь к своей ветке и восстановите изменения командой git stash pop.
Пример 2
У вас несколько stash-ей, и вы хотите применить конкретный. Сначала просмотрите список: `git stash list`. Затем примените нужный stash: `git stash apply stash@{2}`. Если stash больше не нужен, удалите его: `git stash drop stash@{2}`.Частые ошибки
- Типичная ошибка — забывать добавлять описание к stash (
git stash save "описание"), что затрудняет идентификацию изменений позже. - Ещё одна ошибка — использовать
git stash popбез проверки списка stash-ей, что может привести к применению не тех изменений.
Связанные темы
- Работа с ветками в Git (branching)
- Интерактивное добавление изменений в индекс (git add -p)
- Отмена изменений в Git (git reset, git checkout)
Follow-up вопросы
Чем отличается git stash apply от git stash pop?
Уровень: basic
git stash apply восстанавливает изменения из stash, но оставляет их в списке stash. git stash pop также восстанавливает изменения, но удаляет их из списка stash после применения.
Как удалить ненужный stash?
Уровень: intermediate
Для удаления конкретного stash используется команда git stash drop stash@{n}, где n — индекс stash. Чтобы удалить все stash, можно использовать git stash clear.
Можно ли применить stash к другой ветке?
Уровень: intermediate
Да, stash можно применить к любой ветке. Для этого нужно переключиться на нужную ветку и выполнить git stash apply или git stash pop. Однако возможны конфликты, если изменения несовместимы.
Как создать новую ветку из stash?
Уровень: advanced
Для создания новой ветки из stash используется команда git stash branch <имя_ветки> stash@{n}. Это создаст новую ветку, применит stash и удалит его из списка, если не возникнет конфликтов.
Какие опции есть у git stash для выборочного сохранения изменений?
Уровень: advanced
git stash поддерживает опции --keep-index (сохраняет проиндексированные изменения), --include-untracked (добавляет неотслеживаемые файлы) и --patch (интерактивный режим для выбора изменений).
Как будешь решать конфликт при слиянии
Разбор вопроса «Как будешь решать конфликт при слиянии» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Как настроить Webpack
Разбор вопроса «Как настроить Webpack» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.