
Why: Mengapa Kita perlu Melakukan Ini? 🤔
Pernahkah kamu merasa repositori proyekmu tumbuh menjadi "monster"? Di blog Layar Kosong, ribuan file HTML adalah inti dari segalanya, namun folder img/ seringkali berisi ribuan aset visual yang ukurannya bergiga-giga. Masalah muncul saat kita harus bekerja di perangkat dengan penyimpanan terbatas atau saat koneksi internet sedang tidak bersahabat di Balikpapan.
Sparse Checkout hadir sebagai solusi "bedah plastik" untuk repositori Git. Alih-alih mengunduh dan menampilkan seluruh isi folder, kita bisa memilih secara spesifik folder mana yang ingin kita munculkan di lokal kita tanpa menghapusnya dari server GitHub.
What: Apa Itu Sparse Checkout Sebenarnya? 🧠
Secara harfiah, sparse berarti jarang atau tipis. Dalam konteks Git, teknik ini memungkinkan kita untuk melakukan checkout hanya pada subset file dari pohon kerja (working tree). Bayangkan sebuah perpustakaan raksasa; Sparse Checkout memungkinkan kamu hanya mengambil buku di rak "Teknologi" tanpa perlu menyentuh rak "Sejarah" atau "Seni", meskipun kamu memegang kunci seluruh perpustakaan tersebut.
How: Langkah Demi Langkah Eksekusi Hemat 🛠️
1. Clone Tanpa Beban (Initial Step)
Langkah pertama pakai github CLI,
dimulai saat proses clone. Kita menggunakan filter blob:none agar Git tidak mengunduh isi file besar sampai kita benar-benar membutuhkannya.
- Linux
gh auth login
gh repo clone frijal/LayarKosong -- --filter=blob:none --sparse --depth 1winget install --id GitHub.cli
winget install --id Git.Git
gh auth login
gh repo clone frijal/LayarKosong -- --filter=blob:none --sparse --depth 1brew install git gh
gh auth login
gh repo clone frijal/LayarKosong -- --filter=blob:none --sparse --depth 12. Masuk ke dalam Folder yang barusan di Clone
contoh kita tadi pakai repo bernama LayarKosong.
cd LayarKosong2. Keluar dari Mode Cone
Git modern menggunakan mode Cone secara default (hanya mendukung folder utuh). Karena kita ingin menggunakan pola pengecualian (tanda seru !), kita harus mematikannya.
git config core.sparseCheckoutCone false
git sparse-checkout init3. Menetapkan Aturan "Gaib"
Ini adalah bagian inti. Kita memberitahu Git untuk mengambil semua file di semua folder (/*), tapi abaikan folder img/ dan .github/workflows/ secara spesifik.
git sparse-checkout set --no-cone "/*" "!/img/" "!/.github/workflows/"Seketika, folder img/ dan .github/workflows/ akan menghilang dari File Explorer, namun mereka tetap berada di dalam server repo Github, dan status repositori kamu tetap clean, aman sentosa.
Where & When: Dimana Aturan Ini Disimpan? 📍
Aturan Sparse Checkout tersimpan di folder rahasia, dengan nama .git/info/sparse-checkout. Karena folder .git ini terbawa saat kamu memindahkan hardisk antar komputer, konfigurasi diet ini akan tetap berlaku otomatis di mana pun hardisk itu dicolokkan. Kamu tidak perlu melakukan setting ulang setiap kali pindah perangkat!
git read-tree -mu HEADWho: Siapa yang Mendapatkan Manfaat Terbesar? 👥
Teknik ini sangat krusial bagi aku di Layar Kosong yang sering melakukan otomasi. Dengan mengabaikan folder gambar dan workflow, proses git status, git add, dan git pull menjadi jauh lebih cepat karena Git tidak perlu memindai ribuan file gambar yang statis.