Разделы развития подмодулей Git

Обратите внимание, что (.|\n)* может быть менее эффективным, чем (например) [\s\S]* (если регулярные выражения вашего языка поддерживают такие escape-последовательности), а не поиск того, как указать модификатор, который делает. также соответствуют новостям. Или вы можете пойти с альтернативами POSIXy, такими как [[:space:][:^space:]]*.

1
задан Samarth 13 July 2018 в 19:17
поделиться

2 ответа

Вы также можете использовать git subtree (альтернативный способ для git submodule добавить отдельную ветвь).

Для того, чтобы добавить ветвь субмодуля в другое репо

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

git subtree add --prefix=<folder name> <URL for the submodule repo> <branch name>
  • Например, если добавить подмодуль master в ветвь master проектаA, вы можете используйте команды ниже:
    # In local project A repo
    git checkout master
    git subtree add --prefix=master <URL for the submodule repo> master
    git push origin master
    
  • Чтобы добавить ветвь subodule B-1 к ветви B-1 в projectB, вы можете использовать следующие команды:
    # In local project B repo
    git checkout B-1
    git subtree add --prefix=B-1 <URL for the submodule repo> B-1
    git push origin B-1
    

Для способ обновления поддерева в основных репозиториях:

Если ветвь подмодуля обновляется с новыми изменениями, вы можете обновить поддерево, существующее в основных репозиториях, на:

git subtree pull --prefix=<folder name> <URL for the submodule repo> <branch name>
  • Например, если обновление подмодуля B-1 обновляется с новыми изменениями, вы можете обновить папку B-1 в проектеB соответственно, как показано ниже:
    # In local project B repo
    git checkout B-1
    git subtree pull --prefix=B-1 <URL for the submodule repo> B-1
    git push origin B-1
    

Для того, чтобы отменить изменения с основного repos "в подмодуль репо

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

git subtree push --prefix=<folder name> <URL for the submodule repo> <branch name>
  • Например, если нажать кнопку изменения из ветви ProjectA A-1 (папка A-1) в репозиторий субмодуля, вы можете использовать следующие команды:
    # In local project A repo
    git checkout A-1
    # Make the commit changes in the folder A-1
    git subtree push --prefix=A-1 <URL for the submodule repo> A-1
    git push origin A-1
    
0
ответ дан Marina Liu - MSFT 17 August 2018 в 12:12
поделиться
  • 1
    Спасибо, что подробно объяснили подход Subtree. Это, по сути, то, чего я пытался достичь здесь. Вы видите какой-либо явный недостаток в использовании Subtree против подмодуля? – Samarth 17 July 2018 в 18:21
  • 2
    @Samarth Нет, для поддерева нет недостатков, сравнивая с подмодулем. И большинство ситуаций, чтобы использовать поддерево поддерево поддерево поддерево поддерево поддерево поддерева: ниже: добавить одну ветвь из git repo в другую - использовать gitsutree; добавить весь git repo в другой подмодуль git repo --use. – Marina Liu - MSFT 18 July 2018 в 08:20

Возможно, если вы объявили ваш подмодуль веткой, чтобы следовать

git submodule add -b <branch> <repository> [<path>]. 

. Там, в каждом из ваших проектов, простой git submodule update --remote будет обновить содержимое подмодуля до последнего HEAD из <repository>/<branch>.

0
ответ дан VonC 17 August 2018 в 12:12
поделиться
Другие вопросы по тегам:

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