私たちは (巨大な) プロジェクトを Git に移行しており、サブモジュールの使用を検討しています。私たちの計画は、スーパープロジェクトに 3 つの異なるヘッドを置くことです。
リリース、安定、最新
プロジェクト リーダーはリリース ブランチと安定ブランチを担当し、必要に応じてサブモジュールを移動します。
問題は「最新」のヘッドです。スーパープロジェクトの「最新」のヘッドが、すべてのサブモジュールのマスター ブランチを (自動的に) 追跡できるようにしたいと考えています。また、サブモジュールへのすべてのコミットの履歴が表示されると便利です。
gitslave を見てみましたが、私たちが求めているものとは少し違います。何か提案はありますか?
ベストアンサー1
編集(2020.12.28):GitHubのデフォルトを変更マスター分岐する主要2020年10月から支店。https://github.com/github/名前の変更
以下の回答は依然として古い命名規則を反映しています。
2013年3月更新
git 1.8.2 よりブランチを追跡する可能性を追加しました。
「
git submodule
」は新しいモードの学習を開始しましたリモートブランチの先端と統合する(スーパープロジェクトの gitlink に記録されたコミットと統合するのではなく)。
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
サブモジュールがあった場合すでに存在するブランチを追跡したい場合は、「既存のサブモジュールにブランチを追跡させる方法「」。
こちらもご覧くださいVogella のサブモジュールに関するチュートリアルサブモジュールに関する一般的な情報。
注記:
git submodule add -b . [URL to Git repo];
^^^
の特別な値は
.
、サブモジュール内のブランチの名前は、現在のリポジトリ内の現在のブランチと同じ名前である必要があります。。
見るコミット b928922727d6691a3bdc28160f93f25712c565f6:
submodule add
:--branch
が与えられている場合は、記録してください.gitmodules
署名者: W. Trevor King
これにより、
submodule.<name>.branch
オプション.gitmodules
新しいサブモジュールを追加するときに、このパッチでは、$ git submodule add -b <branch> <repository> [<path>] $ git config -f .gitmodules submodule.<path>.branch <branch>
減少する
$ git submodule add -b <branch> <repository> [<path>]
これは、将来の
$ git submodule update --remote ...
サブモジュールを初期化するために使用したのと同じブランチから更新が取得されます。これは通常、望ましい動作です。
元の回答(2012 年 2 月):
サブモジュールは、親リポジトリによって参照される単一のコミットです。サブモジュールは
それ自体が Git リポジトリであるため、「すべてのコミットの履歴」には、git log
そのサブモジュール内からアクセスできます。
したがって、親がサブモジュールの特定のブランチの最新のコミットを自動的に追跡するには、次の操作を行う必要があります。
- サブモジュール内のcd
- git fetch/pull を実行して、正しいブランチに最新のコミットがあることを確認します。
- 親リポジトリに戻る
- サブモジュールの新しいコミットを記録するために、add して commit します。
ギットスレイブ(すでにご覧になった)が最も適していると思われますが、コミット操作を含む。
サブモジュールに変更を加えるのは、正しいサブモジュール ブランチにチェックアウトし、変更を加えてコミットし、その後スーパープロジェクトに移動してコミットをコミットする (または少なくともサブモジュールの新しい場所を記録する) 必要があるため、少し面倒です。
他の選択肢としては詳細はこちら。