Как git stash позволяет сбросить проект и сохранить изменения
Программирование

Как git stash позволяет сбросить проект и сохранить изменения

Stashing – это малоизвестная, но мощная техника git для сохранения кода, даже когда вы не готовы его зафиксировать

Stashing позволяет хранить копии изменений, внесенных в хранилище, без необходимости создавать коммит

Это полезно при переключении контекстов, особенно если вы переходите от одной ошибки к другой или от одной задачи к другой в одном проекте

Базовая работа с git stash

Вы можете использовать git stash для облегчения рабочего процесса при работе с параллельными линиями работы. Представьте, что вы работаете над давно начатой задачей, внося изменения в свою локальную рабочую копию. Затем появляется что-то срочное, над чем нужно срочно поработать

Стандартный рабочий процесс для хранения изменений выглядит следующим образом:

  1. Внести локальные изменения.
  2. Хранить локальные изменения.
  3. <другие работы>
  4. Повторно применить сохраненные изменения.

Когда вы сохраняете изменения с помощью команды git stash push , git сбрасывается на HEAD. После этого вы можете продолжать работу над всем, что вам нужно, фиксируя изменения в хранилище так, как будто вы никогда не вносили первоначальных изменений

Когда вы закончите работу над тем, что вас отвлекло, используйте команду git stash pop , чтобы применить свои изменения и удалить их из хранилища. Вы также можете применить свои изменения и сохранить их в тайнике с помощью git stash apply. Это может быть полезно, если вы хотите быстро применить изменения к нескольким веткам

Работа с более чем одним тайником

Если вы очень заняты, вы можете обнаружить, что работаете над несколькими задачами одновременно, и вам может понадобиться сохранить их все. Не волнуйтесь, git stash создан для этого

Каждый раз, когда вы используете git stash push, вы сохраняете очередной набор изменений. Используйте git stash list , чтобы показать всё, что вы сохранили. Вы увидите что-то вроде этого:

stash@{0}: WIP on main: 2fba62e first commit
stash@{1}: WIP on main: 2fba62e first commit

Эти сообщения не очень полезны, но вы можете оставить для себя некоторые подсказки, добавив пользовательское сообщение при тайнике:

git stash push -m'third'

Когда вы составите список, вы увидите ваше пользовательское сообщение:

stash@{0}: On main: third
stash@{1}: WIP on main: 2fba62e first commit

Показывает различия между диффами

Чтобы узнать, что изменилось в тайнике, используйте git stash show. Без дополнительных аргументов она покажет сводку изменений для последнего тайника, выглядящую следующим образом:

$ git stash show
README.md | 3 +++
1 file changed, 3 insertions(+)

Вы также можете передать идентификатор тайника для запроса конкретной записи:

git stash show stash@{0}

Создание ветки из тайника

Вы можете решить, что изменения в тайнике настолько значительны, что заслуживают отдельной ветки. Если это так, создайте новую ветку из тайника с помощью команды branch :

git stash branch

Опять же, по умолчанию это будет работать с самым последним тайником, но при необходимости вы можете указать идентификатор тайника.Git создаст вашу новую ветку из той же точки репозитория, что и тайник. Затем он применит изменения из хранилища к вашей рабочей копии

Очистка хранилища

Не существует команды “git unstash Если вы хотите удалить запись из тайника, используйте drop:

git stash <strong>drop</strong>

Опять же, по умолчанию задается последняя, но вы можете указать идентификатор тайника. Если вы решите избавиться от всего, что у вас было в тайнике, используйте эту команду:

git stash clear

Используйте git stash для временных облегченных коммитов

Git stash сейчас не так мощны, как полные репозитории. Но они все еще предлагают множество полезных функций. Используйте тайники, если вы часто сталкиваетесь с необходимостью переключать ветки в процессе работы

Stashing – это лишь одна небольшая часть git, который является программой с огромным количеством возможностей

Теги

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий