Menu
CoddyTech

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.

git submodule menyematkan repositori lain di dalam repositorimu, terkunci pada satu commit yang pasti.

Sintaks

PerintahFungsinya
git submodule add <url> libs/xMenambahkan repo sebagai submodule di libs/x
git clone --recurse-submodules <url>Clone repo beserta submodule-nya
git submodule update --init --recursiveInisialisasi dan ambil submodule setelah clone biasa
git submodule update --remoteMemperbarui submodule ke commit terbarunya
git submodule statusMenampilkan commit setiap submodule

Kasus umum

TujuanPerintah
Clone proyek yang memakai submodulegit clone --recurse-submodules <url>
Ambil submodule setelah terlanjur clonegit submodule update --init --recursive
Naikkan submodule ke versi terbarunyagit 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?
Pakai 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?
Jalankan 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?
Karena kamu melakukan clone tanpa --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?
Bisa. Buka playground terminal untuk menjalankan git submodule di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas cara menyiapkan repositori langkah demi langkah.
Ilustrasi bahasa pemrograman di Coddy

Belajar Git bersama Coddy

Mulai