Rose debug info
---------------

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

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

Бывает удобно, когда нужно быстро пофиксить баг и вернуться.

1. Способ через git stash

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

Вот шаги:

  1. Сохраните изменения с помощью stash:
git stash
  1. Переключитесь на другую ветку:
git checkout [имя_ветки]
  1. Если вы захотите вернуть свои изменения на текущей ветке, используйте:
git stash apply

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

git stash list

И применить конкретный stash с помощью:

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

Учтите, что `git stash apply` применяет изменения, но оставляет их в stash. Если вы хотите применить изменения и удалить их из stash, используйте:

git stash pop

2. Способ через git worktree

git worktree позволяет вам иметь несколько рабочих копий одного репозитория. Таким образом, вы можете работать в одной ветке в одной рабочей копии, а в другой ветке — в другой рабочей копии.

  1. Добавление новой рабочей директории для другой ветки

Например, вы работаете над функцией в ветке `feature-x`, но вам также нужно срочно внести изменения в `master`.

git worktree add ../worktree-master master

Это создаст новую рабочую директорию `worktree-master`, где активной будет ветка `master`.

  1. Создание новой ветки в новой рабочей директории

Если вы хотите начать работу над новой функцией и хотите, чтобы у нее была своя рабочая директория:

git worktree add ../worktree-feature-y feature-y

Если ветка `feature-y` еще не существует, она будет создана автоматически.

  1. Просмотр списка рабочих директорий
git worktree list

Это покажет вам все текущие рабочие директории и их связанные ветки.

  1. Удаление рабочей директории
    Если вы закончили работу в дополнительной рабочей директории и хотите ее удалить
rm -rf ../worktree-feature-y
git worktree prune

Здесь мы сначала удаляем директорию, а затем говорим Git очистить устаревшие рабочие директории с помощью команды `prune`.

3. Самый не технологичный способ: сделать клон проекта в соседней дирректории

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

1 комментарий
%username% 6 мес

У меня есть 2 локальные копии проекта

  1. первая копия рабочая и в ней я иногда пользуюсь git stash
  2. вторая копия в папке asap :-D ну вы понимаете