Вопросы по Git

Какова цель команды git worktree?

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

Зачем это нужно?

Предположим, что вы работаете над новой функциональностью в ветке feature-branch, но вам также нужно исправить ошибку в основной ветке main. Вместо того чтобы переживать за переключение между ветками и последующими конфликтами, вы можете использовать git worktree, чтобы создать отдельную рабочую копию для каждой ветки.

Как использовать git worktree?

Вот как вы можете создать и использовать рабочие деревья с помощью git worktree.

  1. Создание нового рабочего дерева

Для начала вам нужно создать новое рабочее дерево. С помощью команды git worktree add вы можете указать путь к новому рабочему дереву и ветку, с которой вы хотите работать:

git worktree add ../feature-branch feature-branch

В этом примере мы создаем новое дерево по пути ../feature-branch, основываясь на ветке feature-branch.

  1. Перейдите в новое рабочее дерево

Теперь вы можете перейти в созданное рабочее дерево:

cd ../feature-branch

Теперь вы можете работать в этой папке как в обычном репозитории Git. Внесенные изменения будут относиться именно к этой ветке, и их можно будет закоммитить, не мешая другим веткам.

  1. Список рабочих деревьев

Чтобы посмотреть все активные рабочие деревья в вашем репозитории, вы можете использовать команду:

git worktree list

Это покажет вам список всех рабочих деревьев и их ассоциацию с ветками.

  1. Удаление рабочего дерева

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

git worktree remove ../feature-branch

Пример

Рассмотрим пример, в котором вы работаете над новой функцией и исправляете ошибки одновременно:

# Создаём новый рабочий каталог для работы над функциональностью
git worktree add ../my-feature-feature feature-branch

# Переходим в новую папку
cd ../my-feature-feature

# Теперь вы можете работать над вашим кодом
# Внесите изменения и закоммитьте их
git add .
git commit -m "Добавлена новая функция"

# Вернитесь в основную ветку, чтобы исправить ошибку
cd ../my-repository
git checkout main

# Создайте новое рабочее дерево для исправления ошибки
git worktree add ../bugfix main

# Теперь исправьте ошибку в этой новой папке
cd ../bugfix
# ... работа над исправлением

Заключение

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