Как не коммитя и не теряя изменения переключиться на другую ветку Git.
Оказалось, что многие разработчики не знают, что можно не создавать коммит изменений в коде, чтобы переключиться на другую ветку, что-то поправить и вернуться к своей текущей задаче.
Бывает удобно, когда нужно быстро пофиксить баг и вернуться.
1. Способ через git stash
Если вы внесли изменения в вашем рабочем каталоге и хотите переключиться на другую ветку без коммита, вы можете использовать `git stash`. Это временно сохранит ваши изменения и очистит рабочий каталог.
Вот шаги:
- Сохраните изменения с помощью stash:
git stash- Переключитесь на другую ветку:
git checkout [имя_ветки]- Если вы захотите вернуть свои изменения на текущей ветке, используйте:
git stash applyЕсли у вас несколько сохраненных изменений в stash, вы можете увидеть список всех stash с помощью:
git stash listИ применить конкретный stash с помощью:
git stash apply stash@{номер}Учтите, что `git stash apply` применяет изменения, но оставляет их в stash. Если вы хотите применить изменения и удалить их из stash, используйте:
git stash pop2. Способ через git worktree
git worktree позволяет вам иметь несколько рабочих копий одного репозитория. Таким образом, вы можете работать в одной ветке в одной рабочей копии, а в другой ветке — в другой рабочей копии.
- Добавление новой рабочей директории для другой ветки
Например, вы работаете над функцией в ветке `feature-x`, но вам также нужно срочно внести изменения в `master`.
git worktree add ../worktree-master masterЭто создаст новую рабочую директорию `worktree-master`, где активной будет ветка `master`.
- Создание новой ветки в новой рабочей директории
Если вы хотите начать работу над новой функцией и хотите, чтобы у нее была своя рабочая директория:
git worktree add ../worktree-feature-y feature-yЕсли ветка `feature-y` еще не существует, она будет создана автоматически.
- Просмотр списка рабочих директорий
git worktree listЭто покажет вам все текущие рабочие директории и их связанные ветки.
- Удаление рабочей директории
Если вы закончили работу в дополнительной рабочей директории и хотите ее удалить
rm -rf ../worktree-feature-y
git worktree pruneЗдесь мы сначала удаляем директорию, а затем говорим Git очистить устаревшие рабочие директории с помощью команды `prune`.
3. Самый не технологичный способ: сделать клон проекта в соседней дирректории
Да, можно сделать git clone репозитория в соседнюю дирректорию, сделать срочные изменения и запушить их, не трогая при этом ничего в текущей рабочей копии.
У меня есть 2 локальные копии проекта