Пейджер

🌍 Привет мир! 👋🏻

🌍 Привет мир! 👋🏻

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

🚀 Мотивация

Я, в процессе своей работы, постоянно сталкиваюсь с тем, что мне нужно переключиться с текущей ветки на другую. Это может быть связано с быстрым фиксом бага или банально с необходимостью посмотреть имплементацию товарища по команде (в UI ходить не хочу — лишние действия). Конечно, можно закоммитить текущие правки и переключиться, а потом вернуться и сделать git reset --soft, но это уже чуть больше действий, а мы же ленивые — мы так не хотим. Поэтому давайте двигаться в сторону правильного флоу, в сторону применения stash.

🤕 Нельзя просто так взять и сменить ветку

Если в рабочей директории есть uncommitted изменения, Git не позволит переключиться, если эти изменения конфликтуют с файлами в целевой ветке.

error: Your local changes to the following files would be overwritten by checkout:
  index.html
Please commit your changes or stash them before you switch branches.
Aborting


Что такое git stash?

Git stash — это способ временно сохранить текущие изменения (staged или unstaged) в рабочей директории, чтобы позже к ним вернуться. При этом коммит не создаётся, а изменения откладываются в специальное место .git/refs/stash.

💬 Основные команды git stash:

✏️ Сохранение изменений:

git stash save "описание изменений"


✏️ Чтобы сохранить также и untracked (неотслеживаемые) файлы:

git stash save -u "описание изменений"


Это полезно, когда в проекте есть новые файлы, которые ещё не добавили в индекс с помощью git add. Если необходимо временно отложить и их тоже, чтобы полностью очистить рабочую директорию и безопасно переключиться на другую ветку — используйте флаг -u.

✏️ Просмотр всех stash:

$ git stash list
stash@{0}: WIP on egg: 1e6f83d override some stuffs
stash@{1}: WIP on Marketing-page-hero-section: eb9747e add some stuff


Здесь stash@{0} — это идентификатор сохранённых изменений, WIP (Work In Progress) указывает на промежуточное состояние, egg — имя ветки, а 1e6f83d — хеш последнего коммита. Stash складываются по принципу LIFO — последний добавленный будет под индексом stash@{0}.

✏️ Применить последние изменения из stash:

git stash pop


✏️ Можно указать, какой именно stash нужно применить:

git stash pop stash@{номер}


✏️ Удалить ненужные stash:

git stash drop stash@{номер}


✏️ Очистить весь список stash:

git stash clear


🚩 Ещё больше полезных команд — в этом cheat sheet

☀️ Рекомендации:

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

🎉 Итог

Изучайте команды Git, и ваше ментальное здоровье будет цело! 😄

💬 Делитесь своим мнением в комментариях 👇 Если статья оказалась полезной — не забудьте поставить лайк! 👍

#GIT
Медиа 1
Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.
Подписаться на @ivanchikovitclub Открыть пост в Telegram