2010-12-07 15 views
23

1 gitリポジトリを他のリポジトリにリンクするにはどうすればいいですか?1 gitリポジトリを他のリポジトリにリンクする方法は?

/var/Common.git

/var/Project1.git

/var/Project2.git

は、私は以下のリポジトリを持っていると仮定します今、他のリポジトリに Common.gitを使用したいと思います。どうすればいい? http://git-scm.com/docs/git-submodule

をProject1のとProject2の中で、あなたが共通のサブモジュールを追加します。

+0

https://git.wiki.kernel.org/index.php/GitSubmoduleTutorial –

答えて

37

サブモジュールは、外国のリポジトリは、ソースツリーの専用のサブディレクトリ内に埋め込むことができるようにするには、常に特定のコミットで指摘しました。

キーワード埋め込みがある:Common.gitの実際のクローンは、他のプロジェクトのそれぞれの内部に埋め込まれることになります。これは一般に、他のプロジェクトの中でそれを変更せずに、ただ一つのバージョンを使用し、元のCommon.gitからそのバージョンを更新するときに便利です。サブモジュールへのパスがリポジトリにコミットされようとしているので、あなたが一般に公開URLを使用する必要があること

# add Common.git as a submodule at the path "common" inside this repo 
git submodule add /var/Common.git common 
# initialize it, clone, and check out a copy 
git submodule update --init 
# commit the addition of the submodule 
git commit 

注:あなたはこのような何かをしたいです。ローカルでカスタマイズする場合は、git submodule initを実行し、.git/configでURLを編集してからgit submodule updateを実行します。さらなる質問がある場合は、マンページを参照するかSOを検索してください。ここにサブモジュールの質問がたくさんあります。

一方、各プロジェクト内のCommon.gitの内容を編集する場合は、git-subtreeを使用することができます。これは、gitのサブツリーマージファシリティに関するフレンドリなラッパーです。そうすればcommon.gitの内容は各プロジェクト内の追跡されたコンテンツと見なされ、コミットをそれに分割してCommon.git自体にマージし、Common.gitへの更新をプロジェクトにマージすることができます。

4

これはgit submoduleが設計された完璧なケースです。そしてあなたはgit submodule checkout

である。クローンされたレポでは、Common gitのハッシュだけを格納する。だからあなたgit submodule initとチェックアウト。あなたはおそらくsubmodules探している

関連する問題