# Переключение на другую задачу, когда текущая еще не закончена

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

---

## **1. Использование `git stash` (Временное сохранение изменений)**

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

```bash
git stash
```

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

```bash
git checkout feature/another-task
```

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

```bash
git checkout feature/new-feature
git stash pop  # Вернет изменения и удалит их из stash
```

Если требуется сохранить несколько отложенных изменений, можно посмотреть список stash:

```bash
git stash list
```

А затем применить нужный:

```bash
git stash apply stash@{0}
```

---

## **2. Коммит незавершенных изменений в черновую ветку**

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

```bash
git checkout -b wip/feature-new-feature
git add .
git commit -m "WIP: временное сохранение"
git push origin wip/feature-new-feature
```

После этого можно переключиться на другую задачу:

```bash
git checkout feature/another-task
```

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

```bash
git checkout feature/new-feature
git merge wip/feature-new-feature
```

---

## **3. Коммит с пометкой `WIP` (Work In Progress)**

Если возможно закоммитить частичные изменения, можно сделать коммит с пометкой `WIP`:

```bash
git add .
git commit -m "WIP: начало работы над фичей"
```

Затем переключиться на другую ветку:

```bash
git checkout feature/another-task
```

Когда будет возможность вернуться, переключиться обратно и продолжить работу.

---

### **Какой способ выбрать?**

- **`git stash`** — если изменения локальные и их не нужно пушить.
- **Черновая ветка (`wip/feature-new-feature`)** — если требуется сохранить изменения на сервере.
- **Коммит `WIP`** — если можно сделать осмысленный коммит.

Обычно в командах `git stash` подходит для быстрого переключения, а `WIP`-коммиты или черновые ветки — для более долгосрочных перерывов.