web-dev-qa-db-ja.com

GitはサブモジュールのコミットのSHA1をどこに保存しますか?

サブモジュールをgitリポジトリに追加すると、sha1が参照するサブモジュールの特定のコミットを追跡することを知っています。

このsha1値が格納されている場所を見つけようとしています。

.gitmodulesおよび.git/configファイルには、サブモジュールのパスのみが表示され、コミットのsha1は表示されません。

git-submodule(1) リファレンスはgitlinkエントリについてのみ言及し、 gitmodules(5) リファレンスはこれについても何も言及していません。

119
Abizern

Gitのオブジェクトデータベースに直接保存されます。サブモジュールが存在するディレクトリのツリーオブジェクトには、サブモジュールのコミットのエントリがあります(これはいわゆる「gitlink」です)。

git ls-tree master <path-to-directory-containing-submodule> (あるいは単に git ls-tree masterサブモジュールが最上位ディレクトリにある場合)。

143
Dan Moulding