2016-04-11 9 views
11

パブリック・リポジトリを作成して、メイン・リポジトリ(プライベート)からいくつかのサンプル・ファイルを作成したいと考えています。 git repoから別のgit repoにいくつかのフォルダをソフトにリンクする方法はありますか?git repoから別のレポにフォルダをリンクするには?

答えて

20

このタスクでは、サブモジュールを使用する必要があります。

サブモジュールは同じルートの下にある異なるgitリポジトリです。
ルートリポジトリ

Submodules内のフォルダレベルで2つの異なるプロジェクトを管理することができますこの方法では、常にで指摘し、外国のリポジトリは、専用のサブディレクトリ内のソースツリーのを埋め込むことを可能にします特定のコミット。

git submodule


あなたがこれまでに行ったように、サブプロジェクトへのあなたの大きなプロジェクトを分割します。
は今使用して、あなたの主なプロジェクトの各サブプロジェクトを追加します。

git submodule add <url> 

プロジェクトは、あなたのレポに追加されたら、あなたはそれを初期化し、更新する必要があります。 のGitのよう

git submodule init 
git submodule update 

1.8.2オプション--remote

git submodule update --remote --merge 

を添加し、新しい意志fetch各サブモジュールの上流から最新の変更、merge them in、およびcheck outサブモジュールの最新リビジョン。 the docsとして

はそれを説明します。

--remote

このオプションは、更新コマンドに対してのみ有効です。スーパープロジェクトの記録したSHA-1を使用してサブモジュールを更新する代わりに、サブモジュールのリモート追跡ブランチのステータスを使用します。

これは、各サブモジュールでgit pullを実行するのと同じです。


しかし、どのように私は、親の層で共有コードに影響を及ぼしCでのバグ修正のシナリオにコミット押すでしょうか?再び

:サブモジュールを使用すると、その内容の一部として、メインプロジェクト内にコードを配置します。フォルダ内にローカルに置くこととサブモジュールの一部として持つことの違いは、サブモジュールではコンテンツが別のスタンドアロンリポジトリに管理(コミット)されることです。


これは、各プロジェクトがスタンドアロンプ​​ロジェクトである別のプロジェクト内のsubmodule-projectの図です。

enter image description here


git subtree

Gitのサブツリーは、あなたがに非常に類似した別の1

のサブディレクトリとして任意のリポジトリを挿入することができます0が主な違いは、あなたのコードが管理されている場所です。サブモジュールでは、コンテンツは別のレポに配置され、そこで管理され、他のレポにも複製することができます。

subtreeルートプロジェクトの一環としてではなく、別のプロジェクトでコンテンツを管理しています。

セットアップ方法を書き留めたり、使い方を理解するのではなく、すべてを説明するこの優れた記事を読むことができます。

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

+0

サブモジュールとサブツリーの大きな参照。私はあなたが明示的にデスティネーションリポジトリのソースリポジトリのサブディレクトリを参照することに対処しているとは思わない。 – skitheo

関連する問題