Частичный клон с Мерзавцем и Подвижный

Действительно ли возможно клонировать только одно ответвление (или от данной фиксации) в Мерзавце и Подвижный? Я имею в виду, я хочу клонировать центральный repo, но так как это огромно, я хотел бы только получить часть его и все еще смочь внести назад мои изменения. Действительно ли это возможно? Как, я только хочу от Тега 130 вперед или что-то как этот?

Если так, как?

73
задан tshepang 29 May 2014 в 20:16
поделиться

2 ответа

В мире Git вы говорите о трех различных типах частичных клонов:

  • мелкие клоны: Мне нужна история, начиная с точки ревизии X и далее.

    Используйте для этого git clone --depth , но помните, что мелкие клоны несколько ограничены во взаимодействии с другими репозиториями. Вы сможете создавать патчи и отправлять их по электронной почте.

  • частичное клонирование по пути к файлу: Я хочу, чтобы вся история изменений была в каком-то каталоге / path .

    Невозможно в Git. Однако с современным Git у вас может быть разреженная проверка , то есть у вас есть вся история, но вы извлекаете (есть в рабочей области) только подмножество всех файлов.

  • клонирование только выбранной ветви: Я хочу клонировать только одну ветвь (или выбранное подмножество ветвей).

    Возможно, и

    до git 1.7.10 не просто: вам нужно будет сделать то, что clone делает вручную, то есть git init [] , затем git remote add origin , отредактируйте .git / config , заменив * в remote.origin.получить по запрошенной ветке (возможно, «master»), затем git fetch .

    начиная с git 1.7.10 git clone предлагает вариант - single-branch , который, кажется, был добавлен только для этой цели и кажется довольно простым.

    Однако обратите внимание, что, поскольку ветви обычно имеют большую часть своей истории, выгода от клонирования только подмножества ветвей может быть меньше, чем вы думаете.

Вы также можете выполнить неглубокое клонирование только выбранного подмножества ветвей.

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

75
ответ дан 24 November 2019 в 12:18
поделиться

В ртутной стране вы говорите о трех разных типах частичных клонов:

  • мелкие клоны: мне нужна история, начиная с точки ревизии X и далее используйте расширение remotefilelog
  • частичные клоны по пути к файлу : Я хочу, чтобы вся история изменений в каталоге / пути с экспериментальным узким расширением , или я хочу, чтобы в моем рабочем каталоге находились только файлы в каталоге / пути с экспериментальным разреженным расширением (поставляется начиная с версии 4.3, см. hg help sparse ).
  • частичные клоны по ветке: мне нужна вся история изменений в ветке Y: используйте clone -r

Если вы знаете, как люди захотят разбить вещи по пути к файлу (несколько проектов в одном репо (позор you)) вы можете использовать субхранилища (вроде как svn externals) для предварительного разделения репо на отдельные клонируемые части

Также, что касается «настолько огромного, что я хотел бы получить только его часть»: вы действительно нужно сделать это только один раз. Просто клонируйте его во время обеда, и он будет у вас навсегда. Впоследствии вы можете потянуть и эффективно получать дельты при продвижении вперед. И если вам нужен еще один его клон, просто клонируйте свой первый клон. Не имеет значения, где у вас есть клон (а локальные клоны не занимают дополнительного дискового пространства, поскольку они являются жесткими ссылками под крышками).

50
ответ дан 24 November 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: