Repositori Git — adalah penyimpanan kode sumber proyek, di mana Git melacak setiap perubahan file sepanjang pengembangan. Repositori berisi riwayat lengkap commit, cabang, dan tag, yang memungkinkan pengembang bekerja sama dalam kode. Menurut data Git, 2024, repositori adalah dasar dari setiap sistem kontrol versi dan digunakan dalam jutaan proyek di seluruh dunia.
Poin Utama
Repositori Git — adalah struktur data di mana sistem kontrol versi menyimpan metadata dan objek yang mendeskripsikan riwayat perubahan file proyek. Ketika pengembang menginisialisasi repositori dengan perintah git init, Git membuat folder tersembunyi .git di akar proyek.
Di dalam folder ini terdapat semua objek, referensi, dan file konfigurasi yang diperlukan untuk pengoperasian sistem. Repositori tidak terikat pada lokasi tertentu — pengembang dapat membuatnya secara lokal, lalu menghubungkannya ke server remote.
Git menggunakan model repositori terdistribusi: setiap peserta proyek memiliki salinan lengkap riwayat di komputernya sendiri. Ini berarti sebagian besar operasi — commit, melihat riwayat, membuat cabang — dilakukan secara lokal tanpa mengakses server.
Menurut dokumentasi Git, arsitektur terdistribusi membuat sistem tahan terhadap kegagalan: jika server mati, repositori lokal mana pun dapat menjadi sumber untuk memulihkan riwayat lengkap proyek.
Repositori lokal — adalah salinan proyek di komputer pengembang. Ini berisi seluruh riwayat commit, cabang, dan tag serta memungkinkan menjalankan operasi commit, branch, merge, dan rebase tanpa koneksi jaringan.
Repositori remote dihosting di server dan berfungsi sebagai titik sinkronisasi untuk semua anggota tim. Pengembang mengirim perubahan mereka dengan perintah git push dan mengambil perubahan orang lain dengan perintah git pull.
Koneksi antara repositori lokal dan remote dikonfigurasi melalui remote origin — URL server yang disimpan dalam konfigurasi Git. Satu repositori lokal dapat terhubung ke beberapa repositori remote, yang berguna saat bekerja dengan fork.
Keuntungan utama dari model ini — pengembang dapat bekerja pada kode secara offline, dan menyinkronkan perubahan hanya ketika siap mengirimkan hasil.
| Karakteristik | Lokal | Remote |
|---|---|---|
| Lokasi | Di komputer pengembang | Di server (GitHub, GitLab) |
| Akses tanpa jaringan | Akses penuh ke semua operasi | Tidak tersedia tanpa koneksi |
| Sinkronisasi | Push/Pull dengan remote | Menerima push dari lokal |
| Cadangan | Tidak terlindung dari kehilangan data | Disimpan di server dengan cadangan |
Model penyimpanan Git secara fundamental berbeda dari sistem kontrol versi lainnya. Alih-alih menyimpan daftar perubahan (delta) antar versi, Git menyimpan cuplikan lengkap dari semua file proyek pada saat setiap commit.
Setiap objek di repositori diidentifikasi oleh hash SHA-1 unik sepanjang 40 karakter. Jika konten file tidak berubah antar commit, Git tidak membuat objek baru tetapi menggunakan kembali yang sudah ada — ini menghemat ruang.
Git menggunakan empat jenis objek: blob (konten file), tree (struktur direktori), commit (cuplikan dengan metadata) dan tag (referensi bernama ke commit). Semua objek disimpan di folder .git/objects.
Menurut Git Internals, model objek Git memastikan integritas data: setiap perubahan konten file menghasilkan hash baru, yang membuat perubahan riwayat yang tidak terdeteksi menjadi mustahil.
Folder .git — adalah jantung repositori. Tanpanya, Git tidak dapat melacak perubahan, dan direktori biasa hanya tetap menjadi kumpulan file. Memahami struktur folder ini membantu mendiagnosis masalah dengan repositori.
File HEAD patut mendapat perhatian khusus. Dalam keadaan normal, file ini berisi referensi simbolis ke cabang, misalnya ref: refs/heads/main. Dalam keadaan detached HEAD, ia menunjuk langsung ke commit — ini berarti commit baru tidak akan terikat ke cabang mana pun.
Bekerja dengan repositori Git mencakup serangkaian operasi dasar yang dilakukan pengembang setiap hari. Setiap operasi mengubah status repositori, menambahkan objek baru atau memindahkan referensi.
Operasi push dan pull — adalah satu-satunya yang memerlukan koneksi ke server remote. Semua operasi lainnya dilakukan sepenuhnya secara lokal, yang memastikan kecepatan kerja tinggi bahkan dengan riwayat yang besar.
Setiap file di repositori melewati empat status: untracked (tidak dilacak), modified (diubah), staged (disiapkan), dan committed (dikomit). Git hanya melacak file yang secara eksplisit ditambahkan melalui git add atau sudah ada dalam riwayat commit.
Memahami model ini — kunci untuk bekerja secara efisien dengan Git. Pengembang dapat secara selektif menyiapkan hanya sebagian file yang diubah untuk commit, menciptakan commit yang lengkap secara logis dengan deskripsi yang jelas.
Repositori remote biasanya dihosting di platform khusus yang menyediakan antarmuka web, sistem manajemen akses, dan alat tambahan untuk pengembangan kolaboratif.
Pilihan platform tergantung pada ukuran tim, kebutuhan privasi, dan integrasi yang diperlukan. Untuk pengembangan seluler, GitHub sering dipilih karena dukungan komunitas yang luas dan integrasi dengan alat CI/CD untuk iOS dan Android.
Mari kita pertimbangkan skenario praktis: seorang pengembang mengkloning repositori yang ada, membuat cabang baru, melakukan perubahan, dan mengirimkannya ke server. Setiap perintah menunjukkan cara bekerja dengan berbagai komponen repositori.
# Mengkloning repositori remote
git clone https://github.com/user/mobile-app.git
# Pindah ke direktori proyek
cd mobile-app
# Membuat cabang fitur baru dan beralih ke cabang tersebut
git checkout -b feature/auth
# Memeriksa status file yang dimodifikasi
git status
# Menambahkan semua perubahan ke staging area
git add .
# Membuat commit dengan deskripsi
git commit -m "Add authentication module"
# Mengirim perubahan ke repositori remote
git push origin feature/auth
Perintah git status — salah satu yang paling berguna dalam pekerjaan sehari-hari. Ini menunjukkan file mana yang telah diubah, mana yang siap untuk commit, dan mana yang sama sekali tidak dilacak oleh Git.
Untuk menganalisis riwayat repositori, digunakan perintah git log dengan berbagai flag pemformatan. Ini menampilkan kronologi commit, penulisnya, tanggal, dan pengidentifikasi SHA-1.
# Melihat riwayat dengan visualisasi grafik cabang
git log --oneline --graph --all
# Melihat perubahan dalam commit tertentu
git show a1b2c3d
# Membandingkan status saat ini dengan commit terakhir
git diff HEAD
# Melihat riwayat file tertentu
git log --follow src/MainActivity.kt
Flag --graph menampilkan grafik ASCII percabangan, yang sangat berguna di repositori dengan pekerjaan aktif di banyak cabang. Untuk proyek seluler dengan rilis yang sering, grafik visual membantu mengevaluasi struktur pengembangan dengan cepat.
Pertanyaan yang Sering Diajukan
Repositori — adalah penyimpanan teknis kode dengan riwayat perubahan. Proyek — adalah konsep yang lebih luas yang mencakup repositori, sistem manajemen tugas, dokumentasi, dan proses pengembangan. Satu proyek dapat berisi beberapa repositori.
Buat repositori baru melalui antarmuka web GitHub dengan mengklik tombol New. Tentukan nama, deskripsi, dan tingkat akses. Kemudian klon repositori ke mesin lokal atau hubungkan repositori lokal yang ada melalui git remote add origin.
Jika repositori remote telah dihapus dari server, tetapi setidaknya satu pengembang memiliki salinan lokal, repositori dapat dipulihkan. Cukup buat repositori remote baru dan jalankan git push --force dari salinan lokal dengan seluruh riwayat.
Fork — adalah salinan repositori orang lain di akun Anda. Anda menerima salinan lengkap riwayat dan dapat membuat perubahan apa pun tanpa mempengaruhi yang asli. Fork digunakan untuk berpartisipasi dalam proyek open-source melalui Pull Request.
Gunakan git gc untuk mengompresi objek dan menghapus data yang tidak dapat dijangkau. Hapus file besar dari riwayat melalui git filter-branch atau git filter-repo. Untuk proyek dengan file biner, pertimbangkan Git LFS (Large File Storage).
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.