Gitのsubmoduleのサポートを調べることができます。サブモジュールを使うと、1つのgitリポジトリを別のgitリポジトリに埋め込むことができます。この種のものにはalternative solutionsがありますが、私はそれらを自分で使っていません。
例は次のようになります。
$ git clone git://github.com/username/project.git
$ cd project
$ git submodule add git://github.com/username/framework.git framework
$ git commit -m "added framework submodule"
あなたがサブモジュールでリポジトリをクローンしている場合、あなたは--recursive
オプションを使用する必要があります:
$ git clone --recursive git://<repository-with-submodules>.git
またはその代わりに、あなたは定期的に複製することができますし、次に実行してください:
$ git submodule init
$ git submodule update
リンクされたドキュメント(およびgit submodule --help
)を参照してください。
変更はサブモジュールに行われた場合、あなたはこのようにそれらを持ち込む:Gitはそのようにするとき誰も与えられたサブモジュール(と関連するコミット特定の記録を保持しているため
# first update the submodule just like any other git repository
$ cd project/framework
$ git pull
# now you have to record the new commit in the parent repository
$ cd ..
$ git commit -m "updated framework submodule"
最後のステップが必要です親リポジトリで意図したとおりに動作しないようにする、最新のリビジョンではなく、サブバージョンのそのサブバージョンを取得します。したがって、サブモジュールを更新する場合は、新しいコミットを親に記録する必要があります。
framework
サブモジュール内で変更を加えた場合は、他のリポジトリと同じようにgit push
となります。親モジュールで新しいリビジョンをコミットする必要があります。
フレームワークに変更が加えられたら、どのようにプロジェクトにそれらのモジュールを追加するのですか?また、プロジェクトの代わりにフレームワークを変更した場合、それらをFramework git repoにどのように戻すのですか? – Justin
私は自分の答えを更新しました。 – larsks
小さなメモが1つあります。サブモジュールHEADは取り外されているため、サブモジュールを変更する際には注意が必要です。ブランチを作成(またはブランチに切り替える)し、変更を加え、コミットしてから押します。 – GoZoner