git stash - временно сохраняет незавершенные изменения в рабочий каталог, чтобы можно было переключиться на другую ветку или выполнить другие задачи, не коммитя незаконченные правки.
Для восстановления изменений используйте:
git stash apply - применяет последние сохраненные изменения из stash.
git stash pop - применяет последние сохраненные изменения и удаляет их из stash.
Если нужно применить конкретный stash (а не последний), можно указать его идентификатор: git stash apply stash@{номер} (например, stash@{0} для последнего)
Команда git stash позволяет временно сохранить локальные изменения в вашем рабочем каталоге и индексе (staging area), чтобы вы могли переключиться на другую ветку, выполнить pull или сделать другую операцию, требующую чистый рабочий каталог. По сути, она создает "стек" ваших изменений, позволяя отложить их, а затем вернуться к ним позже.
Что именно происходит:
git stash сохраняет незафиксированные изменения (измененные и добавленные файлы).Как восстановить изменения из stash:
Существует несколько способов восстановления изменений из stash:
git stash apply: Применяет изменения из самого последнего stash (по умолчанию) или указанного stash (например, `git stash apply stash@{1}`). При этом изменения остаются в stash, как будто вы их просто скопировали. Если при применении stash возникают конфликты, вам нужно будет разрешить их вручную.
git stash pop: То же самое, что и `git stash apply`, но после применения stash он удаляется из списка stash. Тоже может вызывать конфликты.
git stash branch <branchname>: Создает новую ветку с именем <branchname>, применяет изменения из самого последнего stash и удаляет этот stash. Это полезно, если изменения в stash значительно отличаются от текущего состояния ветки, и вы хотите избежать конфликтов.
git stash show -p stash@{n} | git apply: Показывает diff указанного stash (stash@{n}) и применяет его. Это позволяет применить stash без его удаления. Также позволяет просмотреть изменения перед применением.
Управление stash:
git stash list: Показывает список всех stash. Каждый stash имеет индекс (stash@{0}, stash@{1} и т.д.), где stash@{0} - самый последний stash.git stash show stash@{n}: Показывает краткую информацию об изменениях в указанном stash.git stash show -p stash@{n}: Показывает патч (diff) для указанного stash.git stash drop stash@{n}: Удаляет указанный stash.git stash clear: Удаляет все stash. Будьте осторожны с этой командой!Пример:
git stash. Ваш рабочий каталог чист.git stash pop, чтобы восстановить свои изменения.В заключение, git stash — мощный инструмент для управления локальными изменениями, позволяющий временно отложить их и вернуться к ним позже. Важно понимать различные способы восстановления изменений из stash и управления ими.