2017-01-14 10 views
1

私たちは最近、メインプロジェクトからサブプロジェクトfooを分割することに決めました。 fooのすべてを含めることは望ましくありません。すべてのfoo関連のテストは安全にfoo /に保存することができます。gitリポジトリのディレクトリに完全な機能を持っている

今、私は2つのリポジトリ持っている:

main/ 
    include/folder1 
    include/foo/ 
    Test/ 

foo/ 
    include/... 
    Test/... 

を、私は、/ fooのメイン/含める/ fooのを交換したいと思います。これはgit subtree splitを使用して可能です。問題はこれが履歴を書き換えて、main/include/fooの変更を/ foo/includeにどのようにプッシュできるのか不明です。 git subtree push -P include/foo/ fooは恐ろしい結果をもたらします。

誰でも正しいことを知っていますか?

答えて

0

git subtree split ...で分割する必要がありますが、個別のリポジトリに保存する場合は、git submoduleを使用して別のリポジトリで内部レポを管理してください。

Submodules外国リポジトリはソースツリーの専用サブディレクトリ内に埋め込むことを可能にする、常にコミット特定で指摘。

git submodule


あなたがこれまでに行ったように、サブプロジェクトへのあなたの大きなプロジェクトを分割します。投影は、あなたがそれを初期化し、更新する必要があなたのレポTOT追加されると

git submodule add <url> 

を:
は今使用して、あなたの主なプロジェクトの各サブプロジェクトを追加します。各プロジェクトは、スタンドアロンのプロジェクトである、別のプロジェクト内のプロジェクト -

git submodule init 
git submodule update 

これは、サブモジュールの説明図です。

enter image description here


git subtree

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

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

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

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

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

+0

こんにちは、ありがとうございました。残念ながら、それは私が見る限り、完全に私の質問に答えるわけではありません。 gitサブツリーで説明したことを実行することもできます(外部リポジトリをリポジトリに指定したパスに追加する)。問題は、外部リポジトリのフォルダを自分のリポジトリのフォルダにバインドしたいということです。たとえば、私はfooのテストをインクルードしたくないのですが、インクルードが必要なだけです(foo/testsが必要な場合は、main/Test/fooにバインドしたいと思います) – Ulfgard

関連する問題