web-dev-qa-db-ja.com

gitリポジトリから別のリポジトリにフォルダをリンクする方法は?

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

28
Manoj

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

サブモジュールは、同じルートの下にある異なるgitリポジトリです。
この方法で、ルートリポジトリ内のフォルダーレベルで2つの異なるプロジェクトを管理できます。

Submodules常に特定のコミットを指す、ソースツリーの専用サブディレクトリ内に外部リポジトリを埋め込むことができます。


git submodule

これまでのように、大きなプロジェクトをサブプロジェクトに分割します。
次を使用して、各サブプロジェクトをメインプロジェクトに追加します。

git submodule add <url>

プロジェクトをレポジトリに追加したら、初期化して更新する必要があります。

git submodule init
git submodule update

Git 1.8.2新しいオプション--remoteが追加されました

git submodule update --remote --merge

willfetch各サブモジュールのアップストリームからの最新の変更、merge them in、およびcheck outサブモジュールの最新リビジョン。

ドキュメント のように説明してください:

--remote

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

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


ただし、親レイヤーと共有されるコードに影響するCのバグ修正のシナリオでコミットをプッシュするにはどうすればよいですか?

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


これは、サブモジュール-各プロジェクトがスタンドアロンプ​​ロジェクトである別のプロジェクト内のプロジェクトの図です。

enter image description here


git subtree

Gitサブツリーを使用すると、リポジトリを別のリポジトリのサブディレクトリとして挿入できます

submoduleと非常に似ていますが、主な違いはコードが管理される場所です。サブモジュールでは、コンテンツは別のリポジトリ内に配置され、そこで管理されます。これにより、コンテンツを他の多くのリポジトリに複製することもできます。

subtreeは、コンテンツをルートプロジェクトの一部として管理し、別のプロジェクト。

設定方法や使用方法を理解する方法を書き留める代わりに、すべてを説明するこの優れた投稿を読むことができます。

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

56
CodeWizard