私は複数のサブモジュールを持つgit repoを持っています。それらのサブモジュールの1つには、それ自身のサブモジュールが複数あります。私が探しているのは、マスタリポジトリの古いコミットをチェックアウトし、その時点でコードの正しい状態を取得するために、すべてのサブモジュールから適切なコミットをチェックアウトすることです。すべてのサブモジュールを含む古いgit commitを再帰的にチェックアウトするにはどうすればいいですか?
ls-tree
コマンドがそれぞれのサブモジュールがどのコミットをコミットしているかを知ることができるので、gitに必要な情報が含まれていることは知っています。しかし、私は手動でそれぞれをチェックアウトする必要がありますが、これは辛抱強く時間がかかります。
私はgit checkout --recursive
のようなものをお探しですが、このようなコマンドは存在しないようです。
どうすればよいですか?
注:現在、git checkout --recurse-submodulesが実際に存在します(2017)。しかし、今後のGit 2.14だけが適切に動作します。 [私の答えは以下](https://stackoverflow.com/a/44249558/6309)を参照してください。 – VonC