Git Stash — Все о хранении изменений в git

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

git stash
Войти в полноэкранный режим Выйти из полноэкранного режима

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

  • git stash list
  • git stash show
  • git stash apply
  • git stash pop
  • git stash push
  • git stash clear
  • git stash drop

Вывод списка или отображение всех изменений в git stash

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

git stash list
Войти в полноэкранный режим Выйти из полноэкранного режима

Интересно, что это покажет несколько тайников, которые возникли в прошлом. Поэтому Git сохраняет все тайники на случай, если вы захотите извлечь их в будущем. Например, вот проект с большим количеством тайников после выполнения команды git stash list:

stash@{0}: WIP on master: abf89a3 feat-ui: updated look and feel
stash@{1}: WIP on master: 39329d5 feat-ui: Updated CSS Quiz Button
stash@{2}: WIP on master: 46bc7aa feat-ui: Bug fix on article API
stash@{3}: WIP on master: 5dafc53 feat-ui: Fixed issue with secondary-navigation overflow
Войти в полноэкранный режим Выйти из полноэкранного режима

Все тайники хранятся в вашем файле ref/stash в папке .git. Более подробный вид последних git stash можно также просмотреть с помощью git stash show:

common.js      | 405 +--------------------------------------------------------
public/quiz.js | 267 +------------------------------------
Войти в полноэкранный режим Выйти из полноэкранного режима

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

git stash show -p
Войти в полноэкранный режим Выйти из полноэкранного режима

git stash show также имеет несколько других полезных опций:

Восстановление git stash с помощью apply или pop

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

git stash apply
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы, как и я, имеете тонны неиспользуемых тайников, иногда полезно восстановить предыдущий тайник, например stash@{3}, или stash@{25}, как в списке, который мы видели ранее. В этих случаях мы просто перечисляем номер тайника после команды. Например, чтобы восстановить stash@{25}, мы выполним следующее:

git stash apply 25
Войти в полноэкранный режим Выйти из полноэкранного режима

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

git stash apply против git stash pop

Только что мы использовали git stash apply для восстановления хранилища кода. При этом мы возьмем наш сохраненный код и применим его поверх нашего рабочего дерева. При этом сохраненная копия кода останется в списке сохраненного кода — так что вы ее не потеряете. Если вы хотите восстановить упрятанный код и удалить его из списка упрятанного кода, вам нужно использовать pop:

git stash pop
Войти в полноэкранный режим Выйти из полноэкранного режима

Превращение вашего тайника в ветку

Еще одна полезная вещь, которую делает git stash и которая используется недостаточно, это то, что она позволяет нам создать новую ветку из нашего сохраненного кода. Если у вас есть некоторый сохраненный код, вы можете взять текущий проект с изменениями, применить к нему сохраненный код, а затем создать новую ветку с нужным вам именем. Например, следующая команда создаст ветку с именем new-code:

git stash branch new-code
Войти в полноэкранный режим Выйти из полноэкранного режима

Другие способы сохранения вашего тайника и git stash push

Мы уже рассказывали о том, как использовать git stash для сохранения последнего кода, но вы также можете встретить следующую команду в природе:

git stash push
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Подавление сообщений с помощью git stash

В качестве примечания, сейчас имеет смысл упомянуть, что практически все команды git stash имеют опцию -q, которая подавляет любые сообщения или ошибки:

git stash apply -q
Войти в полноэкранный режим Выйти из полноэкранного режима

Удаление вашего тайника

Наконец, иногда вы хотите удалить весь свой тайник. Это немного опасно, поэтому используйте его с осторожностью, но если вы хотите, все, что вам нужно сделать, это:

git stash clear
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Оцените статью
devanswers.ru
Добавить комментарий