4

GIT を使用してプロジェクトを管理しています。

各プロジェクトには「コア」(プロジェクトを構築するフレームワークのようなもの) があるため、各プロジェクトには少なくとも 2 つのリモート ブランチがあります。

  • そのコア フレームワーク用の 1 つのリポジトリ。
  • クライアント プロジェクトごとに 1 つのリポジトリ。

モジュールもあります。各モジュールには基本的な機能を含むコアがあり、各クライアントのベースから各モジュールをパーソナライズします。

  • したがって、各クライアント プロジェクトに含まれるサブモジュールがあります。
  • しかし、サブモジュールのパーソナライズ部分を処理する方法がわかりません。

1 つの特定のクライアント プロジェクトでのみ使用する必要があるサブモジュールにいくつかの新しいファイルを追加したい場合、GIT はどのように役立ちますか?

これらのファイルはメイン プロジェクト用にパーソナライズされているため、クライアント プロジェクト ブランチのサブモジュール内に含まれるいくつかのファイルをコミットするのが最善のケースですが、各サブモジュールが独立しているため、できないようです。

Ps .: SmartGit を使用しています。

4

2 に答える 2

1

これは、git-subtree (マージ) を使用できるシナリオです

リポジトリ内の他のプロジェクトに変更を加えた場合、彼らはあなたのプロジェクトからマージしたいと思うかもしれません。これは、サブツリーを使用して可能です。ツリー内のパスを上に移動して、ツリーの関連部分のみをマージできます。

http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

サブツリー マージの考え方は、2 つのプロジェクトがあり、プロジェクトの 1 つが他のプロジェクトのサブディレクトリにマップされ、その逆も同様です。サブツリーのマージを指定すると、Git はスマートに一方が他方のサブツリーであることを認識し、適切にマージします。これは非常に驚くべきことです。

http://progit.org/book/ch6-7.html

しかし、サブモジュールを使用し、それから離れないようにしたいと思います。

于 2011-04-27T14:25:06.453 に答える
0

各サブモジュールが独立しているため、できません。

サブモジュールが「独立」しているのは事実ですが、個別のリポジトリとして独自のコミットとブランチのセットがあるため、サブモジュールでクライアント プロジェクト ブランチを定義することもできます。

そのブランチは、両方のリポジトリで行われたクライアント プロジェクトに固有の変更を分離するために、メインのクライアント プロジェクト リポジトリとコア サブモジュールで定義されます。
コア サブモジュールで行われた変更をプッシュ バックするときは、クライアントの親リポジトリで使用されているクライアント ブランチの名前と一致する名前のクライアント プロジェクト ブランチに変更をプッシュします。

要するに、命名規則は、多くのクライアント プロジェクト リポジトリで使用および共有されているコア サブモジュールで行われた小さな特定の変更を分離するのに役立つ場合があります。

于 2011-04-27T14:08:01.640 に答える