「git submodule」を使用してサブモジュールの特定のバージョンをチェックアウトするにはどうすればよいですか?


回答:


166

サブモジュールリポジトリは、特定のコミットを指す切り離されたHEAD状態のままです。そのコミットを変更するには、別のタグをチェックアウトするか、コミットして、変更を親リポジトリに追加するだけです。

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status 親リポジトリでは、ダーティツリーが報告されます。

# On branch dev [...]
#
#   modified:   submodule (new commits)

サブモジュールディレクトリを追加し、新しいポインタを保存することをコミットします。


14
サブモジュールの特定のブランチ/バージョンで親リポジトリをコミットした後、他の人が将来同じバージョンのサブモジュールをチェックアウトできますか?または、もう一度手動で指定する必要がありますか?
QZHua 2017

@QZHua:私はこれを自分で実験しましたが、親が複製されたときにサブモジュールのコミットIDが保持されているようです。
サイコノート

37

ステップ1:サブモジュールを追加する

   git submodule add git://some_repository.git some_repository

ステップ2:サブモジュールを特定のコミットに修正する

デフォルトでは、新しいサブモジュールはマスターブランチのHEADを追跡しますが、プライマリリポジトリを更新しても更新されません。サブモジュールを変更して特定のコミットまたは別のブランチを追跡するには、ディレクトリをサブモジュールフォルダーに変更し、通常のリポジトリと同じようにブランチを切り替えます。

   git checkout -b some_branch origin/some_branch

現在、サブモジュールはマスターのHEADではなく開発ブランチで修正されています。

論争する2人の男から— Gitサブモジュールを特定のコミットまたはブランチに結び付けます。


20
使いやすさgit submodule add -b some_branch git://some_repository.git some_repository
Caumons 2013年

15
現時点ではgit submodule add -b、タグまたはsha1hash を使用できるとは思われません。ブランチを取ることができます。
CMCDragonkai 2016

Git Issue Trackerにこれに関する問題はありますか?追跡できるように、誰かがURLを投稿してくださいますか?ありがとう。
コラン

バグを報告するための@colanの手順は、git-scm.com/communityにあります。しかし-b、タグやコミットshasではなくブランチをサポートすること-bは、バグではなく機能です(実際にはの省略形です--branch)。
ヘンリー

1
はぁ。これらすべての年月が経過した後も、彼らにはまだ公開問題トラッカーがありません。
コラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.