0

masterメインのブランチを持つgitリポジトリがあります。

次のような階層があります。

      master
        |
       core
  /     |     \
 V100  V200  V300

V100V200V300コアに依存する異なるモジュールです。

複数の人がこれらのモジュールに取り組んでおりcore、いずれかのV*ブランチからモジュールを変更しています。

問題は、ファイルをコピーせずにこの状況を処理する方法が本当にわからないことです。コア ブランチに変更し、それを変更して、V*ブランチから変更をプルします。

これらの変更を処理するより良い方法はありますか? V*または、ブランチ内からコアモジュールを変更しないでください。

注:coreモジュールはスタンドアロンでテストすることはできません。他のブランチで使用される抽象クラス、インターフェイス、およびライブラリが含まれているだけです。

4

1 に答える 1

2

分岐をさまざまなモジュールを維持する方法と混同しているようです。ブランチは同じコードのバージョンである必要があります。

たとえば、マスター、開発、およびいくつかの機能ブランチがあるとします。マスター ブランチは、展開したとおりにコード化したものです。開発ブランチは、デプロイの準備をしているコードである可能性があります。そして、機能ブランチは、未完成の新しい機能です。

機能を完成させたら、そのブランチを開発ブランチにマージします。リリースの準備が整ったら、開発ブランチを master にマージしてコードをリリースします。など、サイクルのように進んでいきます。

一般的に、別々のコード グループを別々のリポジトリに保持するのが最善だと思います。したがって、V* モジュールごとにリポジトリが必要なように思えます。Core モジュールのレポもあるでしょう。git では、このような多くのリポジトリを持つのが一般的です。

必要に応じて、Core モジュールをサブモジュールとして他のリポジトリに含めることができます。V100/core などのメイン モジュールにディレクトリを作成し、これをサブモジュールとして設定します。これは、コア リポジトリの特定のコミットにリンクします。このようにして、プロジェクトがそのプロジェクトで機能するサブモジュールのバージョンにリンクしていることを確認できます。

サブモジュールにはいくつかの複雑さと落とし穴があり、このために悪い名前が付けられています。適切に使用すると、実際に非常にうまく機能することがわかります。それらの詳細については、 http: //git-scm.com/book/en/Git-Tools-Submodulesをご覧ください。

于 2013-07-25T07:21:40.303 に答える