Git 2.5+ (Q2 2015) официально поддержит это с помощью новой команды git checkout --to=<path>. Смотрите мой ответ ниже .
VonC
2
На самом деле, команда будет git worktree add <path> [<branch>](Git 2.5 RC2)
VonC
Ответы:
156
Git 2.5+ (Q2 2015) поддерживает эту функцию!
Если у вас есть git repo , запустите cool-appcd to root ( cd cool-app) git worktree add ../cool-app-feature-A feature/A. Это проверяет ветку feature/Aв ее собственном новом выделенном каталоге cool-app-feature-A.
Это заменяет старый сценарий contrib/workdir/git-new-workdirболее надежным механизмом, в котором эти «связанные» рабочие деревья фактически записываются в новую $GIT_DIR/worktreesпапку основного репо (так что работают на любой ОС, включая Windows).
Опять же, после того, как вы клонировали репо (в папке типа /path/to/myrepo), вы можете добавить рабочие деревья для разных веток по разным независимым путям ( /path/to/br1, /path/to/br2), в то же время привязав эти рабочие деревья к основной истории репо (больше не нужно использовать --git-dirопцию)
простой скрипт для создания рабочего каталога, который использует символические ссылки для указания на существующее хранилище. Это позволяет иметь разные ветви в разных рабочих каталогах, но все из одного и того же хранилища.
Он выполнит git clone и заменит конфигурацию (чтобы «посмотреть» на исходное репо, поэтому pull / push перейдет в «основное» репо), но это достаточно просто, чтобы служить абстракцией от реальной начальной загрузки.
Однако очень трудно поддерживать несколько рабочих деревьев с идентификаторами. Например, это запрос расширения в JGet (идентификатор затмения) для поддержки рабочего дерева.
Таким образом, вы должны управлять проектом вручную (из командной строки) с множеством проблем или работать с одним рабочим деревом в IDE.
На данный момент этот ответ не является правильным. Пожалуйста, обновите ответ.
Нарендра-Чоудхари
-2
Не совсем так, поскольку Git поддерживает только одну рабочую копию данных хранилища в каталоге хранилища.
Если вы хотите зафиксировать / извлечь один и тот же репозиторий с двумя разными рабочими копиями, вы можете создать пустой репозиторий и клонировать его в две рабочие копии .
Всякий раз, когда вы что-то закончили, вы просто нажимаете на «основной» голый репозиторий.
git checkout --to=<path>
. Смотрите мой ответ ниже .git worktree add <path> [<branch>]
(Git 2.5 RC2)Ответы:
Git 2.5+ (Q2 2015) поддерживает эту функцию!
Если у вас есть git repo , запустите
cool-app
cd to root (cd cool-app
)git worktree add ../cool-app-feature-A feature/A
. Это проверяет веткуfeature/A
в ее собственном новом выделенном каталогеcool-app-feature-A
.Это заменяет старый сценарий
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).
источник
Посмотрите на $ GIT_SRC_DIR / contrib / workdir / git-new-workdir .
источник
Я предлагаю свой небольшой сценарий http://www.redhotchilipython.com/en_posts/2013-02-01-clone-per-feature.html
Он выполнит git clone и заменит конфигурацию (чтобы «посмотреть» на исходное репо, поэтому pull / push перейдет в «основное» репо), но это достаточно просто, чтобы служить абстракцией от реальной начальной загрузки.
источник
Как сказал наш друг VonC пять месяцев назад, теперь с версии 2.5.x появилась новая функция, которая делает эту работу. мерзавец дерево .
источник
Git поддерживает несколько рабочих деревьев одновременно. Для получения дополнительной информации см .:
Однако очень трудно поддерживать несколько рабочих деревьев с идентификаторами. Например, это запрос расширения в JGet (идентификатор затмения) для поддержки рабочего дерева.
Таким образом, вы должны управлять проектом вручную (из командной строки) с множеством проблем или работать с одним рабочим деревом в IDE.
источник
Не совсем так, поскольку Git поддерживает только одну рабочую копию данных хранилища в каталоге хранилища.
Если вы хотите зафиксировать / извлечь один и тот же репозиторий с двумя разными рабочими копиями, вы можете создать пустой репозиторий и клонировать его в две рабочие копии .
Всякий раз, когда вы что-то закончили, вы просто нажимаете на «основной» голый репозиторий.
Некоторые намеки:
man git-clone
git clone --bare
источник
git-new-workdir
.