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