Di mana Git menyimpan SHA1 dari commit untuk submodule?

141

Saya tahu bahwa ketika Anda menambahkan submodule ke repositori git, ia melacak komit tertentu dari submodule yang direferensikan oleh sha1-nya.

Saya mencoba mencari di mana nilai sha1 ini disimpan.

File .gitmodulesdan .git/confighanya menampilkan path untuk submodule, tetapi bukan sha1 dari commit.

The git-submodule (1) referensi hanya berbicara dari gitlinkentri dan gitmodules (5) referensi tidak mengatakan apa-apa tentang ini baik.

Abizern
sumber

Jawaban:

167

Itu disimpan dalam database objek Git secara langsung. Objek tree untuk direktori tempat submodule tinggal akan memiliki entri untuk komit submodule (ini disebut "gitlink").

Coba lakukan git ls-tree master <path-to-directory-containing-submodule>(atau hanya git ls-tree masterjika submodule tinggal di direktori tingkat atas).

Dan Moulding
sumber
14
Ya. Saya melihat di mana tempatnya sekarang. Dan itu cocok dengan id dari git submodule status. Terima kasih.
Abizern
7
di mana mereka disimpan selama penggabungan dan submodule bertentangan?
Adam Dymitruk
@ AdamDymitruk, sudahkah Anda menemukan jawabannya?
kgadek
1
Mengapa tidak memposting pertanyaan baru, kawan? :-)
Ivan Vučica
3
Apakah ada cara untuk mengubah id komit ini untuk menunjuk ke sesuatu yang lain tanpa memperbarui pohon kerja?
CMCDragonkai