0

私はGithubの幸せなユーザーです。時間が経つにつれて、私はいくつかの小さな無関係なおもちゃのリポジトリを蓄積してきました。ここで、コンテナリポジトリを作成します。これをプレイペンと呼び、さまざまなおもちゃのプロジェクトを親のプレイペンの下にgitサブモジュールとしてプルし、ソースのおもちゃのリポジトリに吹き飛ばします。おもちゃはプレイヤードにのみ住むべきです。このレシピを使用してこれを試したとき:http://git.or.cz/gitwiki/GitSubmoduleTutorial大きな問題を発見しました。ほら、私は完全にリポジトリを作成し、それらをプレイヤードの下にのみ住まわせたいと思っています。先に進んでgithubのリポジトリを吹き飛ばしたとき、プレイペン内のリンクをたどることができませんでした。は?

誰かがこれを行う方法を私に説明してもらえますか?前もって感謝します

応援、ダグ

4

2 に答える 2

3

サブモジュールはリポジトリをリンクする方法ですが、各サブモジュールはそれ自身の完全な自己完結型リポジトリです。リポジトリを別のリポジトリのサブモジュールとして追加すると、リポジトリをリンクするだけで、データを親リポジトリに移動することはありません。このため、このリンクを切断せずにサブモジュールであるリポジトリを削除することはできません。

于 2009-10-11T19:30:27.930 に答える
0

さまざまなリポジトリを 1 つのリポジトリに結合できますが、サブモジュールを結合することはできません。私が提案できる方法には用量がありますが、深刻な欠点があります. おもちゃのプロジェクトをマージすると、それらは別個のプロジェクトとして機能しなくなります。1 つのプロジェクトだけにコミットすることはできません。同時にすべてのプロジェクトにコミットする必要があります。同様に、プロジェクトの 1 つだけを分岐することはできません。各分岐はすべてのプロジェクトの分岐です。したがって、複数のブランチを使用したことがある場合、または将来個々のプロジェクトをブランチする可能性がある場合は、別々のリポジトリを使用してください。

結局のところ、さまざまなリポジトリをマージしたい場合は、サブツリーマージ戦略の使用方法のアイデアの一部を使用できます。ただし、古いリポジトリを保持する予定がないため、サブツリー マージを使用する必要はありません。

サブツリー マージ戦略ドキュメントの重要な部分は、新しいコンテナー リポジトリから実行する必要がある次のコマンドです。

$ git remote add -f Bproject /path/to/B
$ git merge -s ours --no-commit Bproject/master
$ git read-tree --prefix=dir-B/ -u Bproject/master
$ git commit -m "Merge B project as our subdirectory"

元のリポジトリを削除するので、最初に追加したリモートも削除して、混乱しないようにすることができます。

$ git remote rm Bproject

この時点で、コンテナ リポジトリには Bproject が含まれています。これらの手順を繰り返して、追加のプロジェクトをマージできます。ただし、前に触れたように、マスター ブランチのみがマージされ、プロジェクトに含まれていた可能性のある他のブランチはマージされません。

于 2009-11-05T07:01:01.417 に答える