私のプロジェクトの構造
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のファイルをプルすることはできません。
git submodule update --recursive
また、初期化されていないサブモジュールを初期化するための--initオプションを使用することをお勧めします。
git submodule update --init --recursive
注:古いバージョンのGitでは、--init
オプションを使用すると、初期化済みのサブモジュールが更新されない場合があります。その場合、--init
オプションなしでコマンドを実行する必要があります。
私が使う方法は:
git submodule update --init --recursive
git submodule foreach --recursive git fetch
git submodule foreach git merge Origin master
サブモジュールのデフォルトのブランチがnotmaster
であることが起こるかもしれないので(これは私の場合はよく起こります)、これは私が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'
最近のGit(私はv2.15.1を使っています)では、次のものが上流のサブモジュールの変更を再帰的にサブモジュールにマージします。
git submodule update --recursive --remote --merge
初期化されていないサブモジュールを初期化するために--init
を追加し、マージの代わりにリベースしたい場合は--rebase
を使用することができます。
後で変更をコミットする必要があります。
git add . && git commit -m 'Update submodules to latest revisions'