352

私のプロジェクト構造

ProjectA
-FrameworkA (submodule)
--Twig (submodule of FrameworkA)

サブモジュールを再帰的に更新するにはどうすればよいですか?私はすでにいくつかのgitコマンドを試しました(ProjectAルートで)

git submodule foreach git pull origin master

また

git submodule foreach --recursive git pull origin master

ただし、Twigのファイルをプルすることはできません。

4

4 に答える 4

767
git submodule update --recursive

また、初期化されていないサブモジュールを初期化する--initオプションを使用することもできます。

git submodule update --init --recursive

注:一部の古いバージョンのGitでは、このオプションを使用すると--init、すでに初期化されているサブモジュールが更新されない場合があります。その場合は、オプションなしでコマンドを実行する必要もあり--initます。

于 2012-04-16T04:24:10.280 に答える
47

私が使用する方法は次のとおりです。

git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge origin master
于 2013-09-26T13:28:34.017 に答える
22

サブモジュールのデフォルトのブランチがない master場合があるので(私の場合はよく起こります)、これが完全なGitサブモジュールのアップグレードを自動化する方法です。

git submodule init
git submodule update
git submodule foreach 'git fetch origin; git checkout $(git rev-parse --abbrev-ref HEAD); git reset --hard origin/$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'
于 2013-12-03T23:17:29.750 に答える
21

最近のGit(私はv2.15.1を使用しています)では、以下はアップストリームのサブモジュールの変更を再帰的にサブモジュールにマージします。

git submodule update --recursive --remote --merge

--init初期化されていないサブモジュールを追加して初期化--rebaseし、マージする代わりにリベースする場合に使用できます。

後で変更をコミットする必要があります。

git add . && git commit -m 'Update submodules to latest revisions'
于 2018-01-22T13:56:09.427 に答える