Stash changes git что это

Команда Git stash. Как прятать изменения в Git

Stash changes git что это. 1718 teaser git stash. Stash changes git что это фото. Stash changes git что это-1718 teaser git stash. картинка Stash changes git что это. картинка 1718 teaser git stash

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

Для чего нужен git stash

Приведем пример. Например, вы выполнили какие-нибудь изменения в файлах и хотите переключиться на другую ветку, но чтобы там не было ваших текущих изменений. С помощью команды git stash можно спрятать эти изменения. Ваши изменения помещаются в отдельное хранилище — в стек, а вы можете спокойно переключиться на другую ветку.

Всё, что вы прячете с помощью git stash, попадает в отдельный список. Затем вы можете извлекать оттуда то, что вы туда спрятали — ваши «прятанья» (далее по тексту будет использоваться это слово).

Рассмотрим, как пользоваться командой git stash

Git stash

Чтобы спрятать изменения достаточно выполнить команду:

Git stash save

Например, можно сохранить изменения и добавить сообщение — подписать изменения, чтобы потом вспомнить, что именно было спрятано. В качестве сообщения, например, можно написать о том, какие именно изменения выполнены в файлах.

Git stash list

Каждое выполнение git stash или git stash save на самом деле создает отдельный коммит и сохраняет его отдельно (в стек).

Команда git stash list выводит список всех ваших прятаний:

Самые старые «прятанья» отображаются внизу списка, самые свежие сверху. Каждое прятанье имеет идентификатор с номером, например, stash@ <0>
Stash changes git что это. git stash list. Stash changes git что это фото. Stash changes git что это-git stash list. картинка Stash changes git что это. картинка git stash list

Git stash apply

Команда git stash apply берет самое свежее прятанье ( stash@ <0>) и применяет его к репозиторию. То есть изменения, которые находятся в этом прятанье, применяются к текущему репозиторию. Это похоже на то, как вы применяете патч, только в качестве патча выступает ваше прятанье.

Если вы хотите применить какое-нибудь конкретное прятанье, можно указать его идентификатор:

Git stash pop

Было:
Stash changes git что это. git stash list. Stash changes git что это фото. Stash changes git что это-git stash list. картинка Stash changes git что это. картинка git stash list
Стало после git stash pop:
Stash changes git что это. git stash pop. Stash changes git что это фото. Stash changes git что это-git stash pop. картинка Stash changes git что это. картинка git stash pop

Также можно указать идентификатор прятанья:

Git stash show

Команда git stash show показывает, какие изменения содержатся в прятанье.

Показываются изменения в файлах для самого последнего прятанья (для stash@ <0>):
Stash changes git что это. git stash show. Stash changes git что это фото. Stash changes git что это-git stash show. картинка Stash changes git что это. картинка git stash show

Можно указать идентификатор прятанья, чтобы вывести изменения в нем:

Git stash branch

Команда git stash branch создает новую ветку с последним прятаньем, и затем удаляет последнее прятанье (как git stash pop).

Можно также указать идентификатор прятанья:

Git stash drop

Команда git stash drop удаляет самое последнее прятанье (stash@<0>).

Можно указать идентификатор прятанья, которое нужно удалить:

Git stash clear

Команда git stash clear удаляет все прятанья. Будьте внимательные перед тем, как ее выполнять, чтобы не удалить нужные данные.

Источник

Припрятывание и очистка

Операция stash берет изменённое состояние вашего рабочего каталога, то есть изменённые отслеживаемые файлы и проиндексированные изменения, и сохраняет их в хранилище незавершённых изменений, которые вы можете в любое время применить обратно.

Команда git stash save не исчезнет в ближайшее время, поэтому не беспокойтесь о её внезапной пропаже. Но вы можете начать переход на push для использования новой функциональности.

Припрятывание ваших наработок

Теперь вы хотите сменить ветку, но пока не хотите фиксировать ваши текущие наработки; поэтому вы припрячете эти изменения. Для того, чтобы припрятать изменение в выделенное для этого специальное хранилище, выполните git stash или git stash push :

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

В данный момент вы можете легко переключать ветки и работать в любой; ваши изменения сохранены. Чтобы посмотреть список припрятанных изменений, вы можете использовать git stash list :

Как видите, Git восстановил в файлах изменения, которые вы отменили ранее, когда прятали свои наработки. В данном случае при применении отложенных наработок ваш рабочий каталог был без изменений, а вы пытались применить их в той же ветке, в которой вы их и сохранили; но отсутствие изменений в рабочем каталоге и применение их в той же ветке не являются необходимыми условиями для успешного восстановления припрятанных наработок. Вы можете припрятать изменения, находясь в одной ветке, а затем переключиться на другую и попробовать восстановить эти изменения. Также при восстановлении припрятанных наработок в вашем рабочем каталоге могут присутствовать изменённые и незафиксированные файлы — Git выдаст конфликты слияния, если не сможет восстановить какие-то наработки.

Необычное припрятывание

Создание ветки из припрятанных изменений

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

Очистка рабочего каталога

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

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

Ниже выполнена команда очистки в интерактивном режиме.

Таким образом, вы можете просмотреть каждый файл индивидуально или указать шаблоны для удаления в интерактивном режиме.

Источник

Stash — Введение в Git

Представьте себе ситуацию. Вы работаете над какой-то важной задачей и исправили довольно много файлов. В этот момент появляется срочная задача — сделать какое-то изменение в исходном коде, не связанное с тем, над чем вы сейчас работаете. Ваши изменения ещё не готовы и они не должны попасть в репозиторий. Что делать?

В самом простом случае, если ваши изменения не пересекаются с изменениями по срочной задаче, вы можете внести исправления, добавить их в индекс, закоммитить и запушить. Но обычно это неудобно и не всегда возможно. А если изменения нужно делать в тех файлах, с которыми вы работаете прямо сейчас?

Подобная ситуация у опытных разработчиков встречается регулярно и, к счастью, она легко решается. В git существует набор команд, позволяющий «прятать» изменения в рабочей директории и восстанавливать их при необходимости. Попробуем:

git stash не удаляет файлы, они попадают в специальное место внутри директории .git «на сохранение». Эта команда не трогает новые файлы, так как они ещё не являются частью репозитория.

После выполнения всех нужных изменений на чистой рабочей директории можно вернуть спрятанные изменения с помощью команды git stash pop :

Файлы вернулись в том виде, в котором они попали в стеш (stash).

Stash в Git работает по принципу стека. Он позволяет сохранить внутрь любое количество изменений и восстановить их в обратном порядке:

Дополнительные материалы

Stash changes git что это. mentors c5a2c0d5be5b134e174aad63fdd756ea3c31e3cbf86a0a112936dda315ec1a93. Stash changes git что это фото. Stash changes git что это-mentors c5a2c0d5be5b134e174aad63fdd756ea3c31e3cbf86a0a112936dda315ec1a93. картинка Stash changes git что это. картинка mentors c5a2c0d5be5b134e174aad63fdd756ea3c31e3cbf86a0a112936dda315ec1a93

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Источник

git stash

Команда git stash позволяет на время «сдать в архив» (или отложить) изменения, сделанные в рабочей копии, чтобы вы могли применить их позже. Откладывание изменений полезно, если вам необходимо переключить контекст и вы пока не готовы к созданию коммита.

Откладывание кода

Команда git stash сохраняет неподтвержденные изменения (индексированные и неиндексированные) в отдельном хранилище, чтобы вы могли вернуться к ним позже. Затем происходит откат до исходной рабочей копии. Например:

Теперь вы можете вносить изменения, создавать новые коммиты, переключаться между ветками и выполнять другие операции Git. По необходимости отложенные изменения можно будет применить позже.

Отложенные изменения сохраняются в локальном репозитории Git и не передаются на сервер при выполнении команды push.

Применение отложенных изменений

Чтобы применить ранее отложенные изменения, воспользуйтесь командой git stash pop :

При извлечении отложенных изменений они удаляются из набора и применяются к рабочей копии.

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

Это полезно, если вам нужно применить одни и те же отложенные изменения к нескольким веткам.

Теперь вы умеете выполнять основные операции с отложенными изменениями. Однако необходимо помнить о следующей особенности команды git stash : по умолчанию Git не создает отложенные изменения для неотслеживаемых или игнорируемых файлов.

Откладывание неотслеживаемых или игнорируемых файлов

По умолчанию команда git stash создает следующие отложенные изменения:

При этом следующие файлы отложены не будут:

Поэтому если в приведенный выше пример добавить третий файл — неиндексированный (т. е. без выполнения команды git add ), при выполнении команды git stash этот файл не будет отложен.

Stash changes git что это. 01. Stash changes git что это фото. Stash changes git что это-01. картинка Stash changes git что это. картинка 01

Управление несколькими наборами отложенных изменений

Рекомендуем добавлять к отложенным изменениям описание в качестве подсказки. Для этого используется команда git stash save «сообщение» :

По умолчанию команда git stash pop применяет последний набор отложенных изменений: stash@

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

Просмотр различий между наборами отложенных изменений

Частичное откладывание изменений

Stash changes git что это. 02. Stash changes git что это фото. Stash changes git что это-02. картинка Stash changes git что это. картинка 02

Нажмите ?, чтобы увидеть полный список команд для работы с участками кода. Часто используются следующие команды:

КомандаОписание
/искать участок кода по регулярному выражению
?Справка
nне откладывать участок кода
qвыйти (все выбранные участки будут отложены)
sразделить участок кода на меньшие части
yотложить участок кода

Специальной команды для прерывания не предусмотрено, но прекратить процесс откладывания можно, нажав CTRL-C (сигнал SIGINT).

Создание ветки из отложенных изменений

Если изменения в ветке отличаются от отложенных изменений, операции извлечения или применения последних могут привести к конфликтам. Вместо этого вы можете создать новую ветку с помощью команды git stash branch и применить отложенные изменения к ней. Это можно сделать так:

Новая ветка создается на основе коммита, изменения в котором использовались при создании набора. Затем к этой ветке применяются извлеченные изменения.

Удаление отложенных изменений

Удалить определенный набор отложенных изменений можно с помощью команды git stash drop :

Следующая команда удаляет все наборы отложенных изменений:

Принцип работы команды git stash

В зависимости от отложенных элементов выполнение команды git stash создает два или три новых коммита. На приведенной выше схеме создаются следующие коммиты:

Ниже показано, как команда git stash шифрует рабочий каталог и раздел проиндексированных файлов в виде коммитов:

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

Stash changes git что это. 03. Stash changes git что это фото. Stash changes git что это-03. картинка Stash changes git что это. картинка 03

Stash changes git что это. 04. Stash changes git что это фото. Stash changes git что это-04. картинка Stash changes git что это. картинка 04

Stash changes git что это. 05. Stash changes git что это фото. Stash changes git что это-05. картинка Stash changes git что это. картинка 05

Stash changes git что это. 06. Stash changes git что это фото. Stash changes git что это-06. картинка Stash changes git что это. картинка 06

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

Готовы изучить Git?

Ознакомьтесь с этим интерактивным обучающим руководством.

Источник

Быстрый совет: изучение возможностей Git Stash

Russian (Pусский) translation by Sergey Zhuk (you can also view the original English article)

Представьте, что вы работаете над новой возможностью в проекте, в котором используется система контроля версий Git. Вы как раз делаете основные изменения в коде, когда вас просят пофиксить критичный баг. Чтобы приступить к исправлениям, вам нужна новая ветка и чистая рабочая директория. На языке основных команд Git у вас есть два варианта:

Stash changes git что это. git stash stashing changes. Stash changes git что это фото. Stash changes git что это-git stash stashing changes. картинка Stash changes git что это. картинка git stash stashing changesStash changes git что это. git stash stashing changes. Stash changes git что это фото. Stash changes git что это-git stash stashing changes. картинка Stash changes git что это. картинка git stash stashing changes Stash changes git что это. git stash stashing changes. Stash changes git что это фото. Stash changes git что это-git stash stashing changes. картинка Stash changes git что это. картинка git stash stashing changes

Необходимые условия

В данной статье подразумевается, что у вас уже есть установленный Git и вы владеете его основами. Вы должны свободно фиксировать изменения, создавать коммиты и работать с ветками. Так же потребуется Git репозиторий для экспериментов.

1. Сохранения изменений

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

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

2. Применение сохраненных изменений

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

Самый последний набор сохраненных изменений будет применен в текущей рабочей директории и можно продолжить с того момента, на котором была остановлена работа. Все на своем месте и готово.

3. Разрешение конфликтов

Нужно вручную разрешить конфликт в файле, но обычно нет необходимости коммитить изменения сразу, как после git merge конфликтов. В большинстве случаев вы продолжаете работать над незаконченной задачей, пока не подготовите осмысленный коммит. Затем можно просто добавить его в индекс и сделать коммит как обычно. Другими словами можно рассматривать конфликты git stash pop как любые другие незафиксированные изменения.

4. Стек сохранений

В большинстве случаев вам хватит перечисленных выше команд для реализации «паузы» в вашей работе. Но понимание того, каким образом изменения сохраняются и представляются внутри, открывает дверь к более продвинутому использованию.

Stash changes git что это. git stash stack. Stash changes git что это фото. Stash changes git что это-git stash stack. картинка Stash changes git что это. картинка git stash stackStash changes git что это. git stash stack. Stash changes git что это фото. Stash changes git что это-git stash stack. картинка Stash changes git что это. картинка git stash stack Stash changes git что это. git stash stack. Stash changes git что это фото. Stash changes git что это-git stash stack. картинка Stash changes git что это. картинка git stash stack

Если прежде вы выполнили git stash три раза, то будет выведено что-то похожее на это:

Заключение

Сохранение осмысленных коммитов лежит в основе разработки с использованием Git. Осмысленные и полноценные коммиты позволяют гораздо легче перемещаться по истории проекта, обнаруживать где были допущены баги, и отменять изменения.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *