# ExitWorktree

Завершує сеанс worktree, раніше створений за допомогою `EnterWorktree`, і повертає сеанс до вихідного робочого каталогу. Цей інструмент діє виключно на worktree, створені `EnterWorktree` у поточному сеансі; якщо такого активного сеансу немає, виклик не дає жодного ефекту.

## Коли використовувати

- Роботу в ізольованому worktree завершено і потрібно повернутися до основного робочого каталогу.
- Завдання у worktree гілки функціональності виконано і після злиття потрібно видалити гілку та каталог.
- Потрібно зберегти worktree для подальшого використання і просто повернутися до вихідного каталогу без видалення чого-небудь.
- Потрібно відмовитися від експериментальної або тимчасової гілки, не залишаючи артефактів на диску.
- Перед запуском нового сеансу `EnterWorktree` необхідно спочатку завершити поточний.

## Параметри

- `action` (рядок, обов'язковий): `"keep"` зберігає каталог worktree і гілку на диску, щоб можна було повернутися до них пізніше; `"remove"` видаляє і каталог, і гілку, виконуючи чисте завершення.
- `discard_changes` (логічне значення, необов'язковий, типово `false`): Має значення лише при `action: "remove"`. Якщо worktree містить незафіксовані файли або коміти, відсутні у вихідній гілці, інструмент відмовить у видаленні, якщо `discard_changes` не встановлено в `true`. Відповідь про помилку містить перелік конкретних змін, щоб ви могли підтвердити їх із користувачем перед повторним викликом.

## Приклади

### Приклад 1: чисте завершення після злиття змін

Після завершення роботи у worktree та злиття гілки в main викличте `ExitWorktree` з `action: "remove"`, щоб видалити каталог worktree і гілку та повернутися до вихідного робочого каталогу.

```
ExitWorktree(action: "remove")
```

### Приклад 2: відмова від тимчасового worktree з незафіксованим експериментальним кодом

Якщо worktree містить експериментальні незафіксовані зміни, які потрібно повністю відкинути, спочатку спробуйте `action: "remove"`. Інструмент відмовить і перелічить незафіксовані зміни. Після підтвердження користувача, що зміни можна відкинути, викличте знову з `discard_changes: true`.

```
ExitWorktree(action: "remove", discard_changes: true)
```

## Примітки

- Цей інструмент діє виключно на worktree, створені `EnterWorktree` у поточному сеансі. Він не вплине на worktree, створені за допомогою `git worktree add`, worktree з попередніх сеансів або звичайний робочий каталог, якщо `EnterWorktree` ніколи не викликався — у цих випадках виклик не дає ефекту.
- `action: "remove"` буде відхилено, якщо worktree має незафіксовані зміни або коміти, відсутні у вихідній гілці, якщо тільки `discard_changes: true` не вказано явно. Завжди підтверджуйте з користувачем перед встановленням `discard_changes: true`, оскільки дані не підлягають відновленню.
- Якщо до worktree було прикріплено сеанс tmux: при `remove` він завершується; при `keep` продовжує роботу, а його ім'я повертається, щоб користувач міг підключитися знову пізніше.
- Після завершення `ExitWorktree` можна знову викликати `EnterWorktree` для запуску нового сеансу worktree.
