Kata terdistribusi muncul di hampir setiap pengenalan Git, tetapi maknanya sering berhenti di kesan “bisa dipakai ramai-ramai”. Arti sebenarnya lebih radikal: setiap orang yang menyalin sebuah repositori Git memperoleh salinan riwayat yang lengkap — bukan sekadar versi terbaru berkasnya. Sebuah clone adalah repositori penuh dengan seluruh commit, branch, dan tag di dalamnya. Chapter ini membandingkan model terdistribusi dengan model terpusat generasi sebelumnya, lalu menjabarkan tiga konsekuensi praktis yang kita rasakan sehari-hari: bekerja luring, memakai banyak remote, dan cadangan yang tersebar alami.

Setiap Clone Memuat Riwayat Lengkap #

Saat kita menjalankan git clone, Git tidak hanya mengunduh berkas versi terakhir. Git menyalin seluruh database riwayat — semua commit sejak yang pertama, semua branch beserta posisinya, dan semua tag yang sudah ditandai. Setelah proses salin selesai, komputer kita memegang repositori yang mandiri: kita bisa commit, melihat riwayat, membandingkan versi, bahkan membuat branch baru tanpa menyentuh sumber salinan itu sama sekali.

Perbedaan mendasar ini pula yang membedakan Git dari alat-alat era terpusat. Pada Subversion, misalnya, klien hanya memegang satu salinan kerja; seluruh riwayat tinggal di server, sehingga melihat log lama pun harus bertanya ke server lewat jaringan.

Model Terpusat vs Model Terdistribusi #

Diagram berikut menyandingkan cara kerja kedua model. Pada model terpusat, riwayat hanya hidup di satu server dan semua klien bergantung padanya; pada model terdistribusi, setiap salinan adalah repositori penuh yang bisa saling bertukar perubahan langsung:

Pada panel kiri, seluruh panah mengarah ke server: begitu server tidak dapat diakses, klien tidak bisa commit, tidak bisa melihat riwayat, dan pekerjaan kolaboratif berhenti. Pada panel kanan, panah dua arah antar-clone hanyalah jalur sinkronisasi — begitu jalur itu terputus, masing-masing clone tetap berfungsi penuh karena riwayatnya lengkap.

AspekModel terpusatModel terdistribusi
Yang dimiliki klienSalinan kerja versi terbaruRepositori lengkap beserta riwayat
Melihat riwayat lamaHarus lewat jaringanLangsung dari salinan lokal
Server bermasalahPekerjaan terhenti totalSetiap clone menjadi cadangan
Contoh sistemCVS, SubversionGit, Mercurial

Ragam pola kerja yang dimungkinkan model terdistribusi — dari kerja solo sampai berbagai pola kolaborasi tim — dibahas pada bab Distributed Workflows di buku Pro Git, serta diterapkan konkret pada section Kolaborasi Tim .

Konsekuensi Praktis #

Bekerja Luring #

Karena riwayat ada di komputer kita, seluruh operasi inti Git berjalan tanpa jaringan: commit, git log, git diff, membuat dan berpindah branch, melihat isi versi lama. Jaringan hanya dibutuhkan pada satu momen: bertukar commit dengan repositori lain lewat git push, git fetch, atau git pull. Perjalanan jauh, koneksi tidak stabil, atau server sedang diperbaiki tidak lagi menghentikan pekerjaan.

Satu Repositori, Banyak Remote #

Repositori lokal tidak terikat pada satu lawan tukar. Kita dapat mencatat beberapa remote — misalnya satu di GitHub untuk tim dan satu lagi di server internal perusahaan — lalu mengambil dan mengirim perubahan ke masing-masing remote secara bergantian. Dalam konvensi penamaan, remote utama lazim dinamai origin, tetapi nama itu kebiasaan, bukan kata kunci khusus. Mekanisme remote dibedah tuntas pada section Remote Repository .

Cadangan yang Tersebar Alami #

Setiap clone adalah cadangan penuh dari seluruh riwayat. Ketika laptop salah satu anggota tim rusak, salinan di komputer rekan lain tetap memuat seluruh commit; ketika server utama hilang, repositori dapat dipulihkan dari clone mana pun. Kehilangan satu mesin tidak lagi berarti kehilangan sejarah proyek — karakteristik yang menjawab langsung masalah kehilangan riwayat pada pengelolaan manual.

Dengan peta mental terdistribusi ini, dua bangunan utama Git tinggal kita kenali dari dekat: repository yang menyimpan seluruh struktur, dan commit sebagai unit pencatatan riwayatnya. Keduanya adalah materi chapter Repository dan Commit .