Git Submodule
Terakhir diperbarui
Submodule menanamkan satu repositori Git di dalam repositori lain, dikunci pada commit tertentu. Repo induk mencatat commit submodule mana yang dibutuhkannya, sehingga semua orang mendapat versi yang sama. Inilah cara menyertakan library atau komponen bersama yang punya repositori sendiri tanpa menyalin kodenya.
Coba perintah-perintah ini di playground terminal: shell sungguhan di browsermu, tanpa perlu instalasi.
Sintaks
| Perintah | Fungsinya |
|---|---|
git submodule add <url> libs/x | Menambahkan repo sebagai submodule di libs/x |
git clone --recurse-submodules <url> | Clone repo beserta submodule-nya |
git submodule update --init --recursive | Inisialisasi dan ambil submodule setelah clone biasa |
git submodule update --remote | Memperbarui submodule ke commit terbarunya |
git submodule status | Menampilkan commit setiap submodule |
Kasus umum
| Tujuan | Perintah |
|---|---|
| Clone proyek yang memakai submodule | git clone --recurse-submodules <url> |
| Ambil submodule setelah terlanjur clone | git submodule update --init --recursive |
| Naikkan submodule ke versi terbarunya | git submodule update --remote |
Pertanyaan seputar git submodule
Apa itu git submodule?
Submodule adalah repositori Git yang bersarang di dalam repositori Git lain pada commit yang tetap. Repo induk menyimpan penunjuk ke commit tersebut, bukan file-file submodule-nya, sehingga rekan kerja melakukan checkout ke versi yang sama. Submodule dipakai untuk menyertakan dependensi atau komponen bersama yang punya repo dan riwayat sendiri.
Bagaimana cara clone repositori beserta submodule-nya?
git clone --recurse-submodules <url> untuk clone repo induk dan semua submodule-nya dalam satu langkah. Kalau kamu sudah terlanjur clone tanpa flag itu, jalankan git submodule update --init --recursive setelahnya untuk mengisi folder submodule.Bagaimana cara memperbarui submodule ke commit terbaru?
git submodule update --remote, yang mengambil branch yang dilacak setiap submodule dan memindahkannya ke commit terbaru. Lalu commit perubahan itu di repo induk, karena repo induk mencatat commit submodule mana yang ditunjuknya. Pembaruan belum tersimpan sampai kamu commit penunjuk tersebut.Kenapa folder submodule kosong setelah clone?
--recurse-submodules, sehingga Git membuat folder-foldernya tapi tidak mengambil isinya. Perbaiki dengan git submodule update --init --recursive, yang menginisialisasi dan mengunduh setiap submodule.Bisakah saya berlatih ini secara online?
git submodule di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas cara menyiapkan repositori langkah demi langkah.