Git работает одновременно на двух ветвях

У меня есть проект со многими ветвями.

Я хотел бы работать с несколькими ветвями одновременно без переключения с помощью git checkout.

Есть ли способ сделать это, кроме копирования всего репозитория где-нибудь еще?

Ответ 1

Git 2.5+ (Q2 2015) будет поддерживать эту функцию: после клонирования репозитория git вы сможете проверять несколько ветвей по другому пути с помощью новой команды git worktree add <path> [<branch>].

Это заменяет более старый script contrib/workdir/git-new-workdir, с более надежным механизмом, где эти "связанные" рабочие деревья фактически записаны в основной папке $GIT_DIR/worktrees основного репо (чтобы работать на любой ОС, включая Windows).

Опять же, как только вы клонировали репо (в папке типа /path/to/myrepo), вы можете добавлять рабочие деревья для разных ветвей в разные независимые пути (/path/to/br1, /path/to/br2), при этом эти рабочие деревья связаны с основная история репо (нет необходимости использовать опцию --git-dir)

Подробнее в разделе Несколько рабочих каталогов с Git?".

И как только вы создали рабочую трюк вы можете переместить или удалить его (с помощью git 2.17+, Q2 2018).

Ответ 2

Посмотрите $GIT_SRC_DIR/contrib/workdir/ git -new-workdir.

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

Ответ 3

Я предлагаю небольшой script http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html

Он выполнит git клон и заменит конфигурацию (чтобы "посмотреть" на исходное репо, поэтому pull/push перейдет в "основное" репо) в основном, но это достаточно просто, чтобы служить абстракцией от фактической начальной загрузки.

Ответ 4

Git поддерживает одновременно несколько рабочих тэгов. Для получения дополнительной информации см.:

Как всегда очень сложно поддерживать несколько worktree с идентификаторами. Например, это запрос улучшения в JGet (Eclipse ID) для поддержки рабочей строки.

Итак, вам нужно управлять проектом вручную (командной строки) с большим количеством проблем или работать с одной рабочей средой в среде IDE.

Ответ 5

Как наш друг VonC сказал пять месяцев назад, теперь есть новая функция с версии 2.5.x, которая выполняет эту работу. git worktree.

Ответ 6

Не так как Git поддерживает только одну рабочую копию данных репозитория в каталоге репозитория.

Если вы хотите зафиксировать/вытащить один и тот же репозиторий с двумя разными рабочими копиями, вы можете создать голый репозиторий и клонировать его на две рабочие копии.

Всякий раз, когда вы что-то закончили, вы просто нажимаете "основной" голый репозиторий.

Некоторые подсказки:

man git-clone

git clone --bare