Bagaimana cara memeriksa versi tertentu dari sebuah submodule menggunakan 'git submodule'?

Jawaban:

167

Repositori submodul tetap dalam status HEAD terpisah yang mengarah ke komit tertentu. Mengubah komit itu hanya melibatkan memeriksa tag atau komit yang berbeda, lalu menambahkan perubahan ke repositori induk.

$ 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 di repositori induk sekarang akan melaporkan pohon kotor:

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

Tambahkan direktori submodul dan berkomitmen untuk menyimpan penunjuk baru.

joemaller
sumber
14
Setelah saya melakukan repo induk dengan cabang / versi submodule tertentu, dapatkah orang lain melakukan pembayaran versi submodule yang sama di masa mendatang? Atau, mereka harus menentukan secara manual lagi?
QZHua
@QZHua: Saya bereksperimen dengan ini sendiri dan tampaknya ID komit dari submodul dipertahankan saat induknya dikloning.
Psikonot
37

Langkah 1: Tambahkan submodul

   git submodule add git://some_repository.git some_repository

Langkah 2: Perbaiki submodul ke komit tertentu

Secara default, submodul baru akan melacak HEAD dari cabang master, tetapi TIDAK akan diperbarui saat Anda memperbarui repositori utama Anda. Untuk mengubah submodul untuk melacak komit tertentu atau cabang berbeda, ubah direktori ke folder submodul dan ganti cabang seperti yang Anda lakukan di repositori biasa.

   git checkout -b some_branch origin/some_branch

Sekarang submodule diperbaiki pada cabang pengembangan, bukan pada HEAD master.

Dari Two Guys Arguing - Tie Git Submodules ke Commit atau Branch Tertentu .

fsenart
sumber
20
Lebih mudah digunakangit submodule add -b some_branch git://some_repository.git some_repository
Caumons
15
Pada saat ini sepertinya tidak git submodule add -bada tanda atau sha1hash. Ini hanya bisa mengambil satu cabang.
CMCDragonkai
Apakah ada masalah untuk ini di pelacak masalah Git? Apakah seseorang akan dengan senang hati memposting URL sehingga kami dapat melacaknya? Terima kasih.
colan
Instruksi @colan untuk melaporkan bug ada di git-scm.com/community . Tapi -bcabang pendukung dan bukan tag atau komit shas adalah fitur bukan bug (sebenarnya -badalah singkatan dari --branch).
henry
1
Mendesah. Setelah bertahun-tahun, mereka masih belum memiliki pelacak masalah publik.
colan