1. ホーム
  2. git

[解決済み] git リポジトリのフォルダを別のリポジトリにリンクするには?

2023-03-29 10:59:01

質問

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

どのように解決するのですか?

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

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

この方法では、ルートリポジトリ内のフォルダレベルで2つの異なるプロジェクトを管理することができます。

Submodules 外国のリポジトリを専用のサブディレクトリに埋め込むことができるようになりました。 の中に埋め込むことができます。


git submodule

これまでのように、大きなプロジェクトをサブプロジェクトに分割します。

次に、各サブプロジェクトをメインプロジェクトに追加します。

git submodule add <url>

プロジェクトがリポジトリに追加されたら、initとupdateを行う必要があります。

git submodule init
git submodule update

現在のところ Git 1.8.2 新オプション --remote が追加されました。

git submodule update --remote --merge

意志 fetch は、各サブモジュールにおける上流からの最新の変更点です。 merge them in そして check out は、サブモジュールの最新リビジョンです。

として ドキュメント に記述されています。

--remote

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

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


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

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


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


git subtree

Git サブツリーは、任意のリポジトリを別のリポジトリのサブディレクトリとして挿入することができます。

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

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

設定方法と使用方法を説明する代わりに、この優れた投稿を読めば、すべてがわかります。

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