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 и управления ими.