Sejauh ini semua materi bergerak dalam satu kursi: satu orang, satu repository, paling banyak satu remote yang ditarik dan didorong sendiri. Begitu anggota tim masuk, masalahnya berpindah — bukan lagi bagaimana menjalankan perintah, melainkan siapa mendorong ke mana, kapan pekerjaan digabung, dan siapa berhak menekan tombol merge. Git sendiri tidak memaksakan jawaban; ia hanya menyediakan bahan bakunya: branch, remote, push, dan fetch. Chapter ini membedah anatomi kolaborasi dari bahan-bahan itu — dua model dasar, peran-peran di dalamnya, dan satu siklus yang mendasari hampir semua workflow — sebelum section ini memetakan pilihan workflow satu per satu.

Dua Model Dasar: Shared dan Fork #

Kolaborasi Git pada praktiknya bermuara pada satu pertanyaan: di repository mana anggota tim boleh mendorong hasil kerjanya. Ada dua jawaban yang dominan. Model shared repository memberi semua anggota akses push ke satu repository yang sama — satu titik temu tempat semua branch hidup. Model fork memberi setiap kontributor salinan repository pribadi di platform hosting; pekerjaan masuk ke repository asal lewat permintaan merge yang direview pemiliknya.

AspekShared repositoryFork
Tempat pushsatu repository bersamafork pribadi kontributor
Siapa boleh pushanggota tim dengan akses tulissiapa pun yang membuat fork
Pintu masuk ke mainbranch langsung atau pull requesthampir selalu pull request
Cocok untuktim internal, proyek privatproyek terbuka, kontributor eksternal

Model shared bisa kita lihat langsung dengan bahan yang sudah dikuasai section Remote Repository . Budi membuat repository kerja, menyiapkan bare repository sebagai pusat, lalu mendorong main pertama:

bash
mkdir latihan && cd latihan
git init -b main
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf 'beranda\n' > situs.md
git add situs.md
git commit -m "Buat kerangka toko"
git init --bare ../toko-bersama.git
git remote add origin ../toko-bersama.git
git push -u origin main

Output yang Dihasilkan (perintah terakhir):

text
To ../toko-bersama.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

Titik temu sudah berdiri. Siti — satu meja di sebelah — tinggal menyalinnya dari direktori induk:

bash
cd ..
git clone toko-bersama.git siti

Output yang Dihasilkan:

text
Cloning into 'siti'...
done.
bash
cd siti
git remote -v

Output yang Dihasilkan:

text
origin	../toko-bersama.git (fetch)
origin	../toko-bersama.git (push)

Satu URL, dua baris arah: fetch untuk menarik, push untuk mendorong — persis pola yang dibedah di Menambahkan Remote . Inilah inti model shared: repository toko-bersama.git adalah alamat yang sama di meja Budi dan meja Siti. Jalur pada keluaran menyesuaikan lokasi direktori di mesin pembaca; di platform nyata URL ini berbentuk HTTPS atau SSH.

Koordinasinya terasa begitu Budi bergerak duluan. Siangnya Budi menambah daftar produk dan mendorongnya:

bash
cd ../latihan
printf 'kopi\ngula\n' > produk.md
git add produk.md
git commit -m "Tambah daftar produk"
git push origin main

Output yang Dihasilkan (perintah terakhir):

text
To ../toko-bersama.git
   a157a72..e95433a  main -> main

Di meja Siti, perubahan itu belum terlihat sampai Siti menariknya:

bash
cd ../siti
git fetch origin

Output yang Dihasilkan:

text
From ../toko-bersama
   a157a72..e95433a  main       -> origin/main
bash
git status

Output yang Dihasilkan:

text
On branch main
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

nothing to commit, working tree clean

Hash commit di mesin pembaca akan berbeda dari keluaran di atas — hash dihitung dari isi, pesan, penulis, dan waktu, jadi angka di mesin mana pun tidak akan sama. Yang penting bentuknya: fetch memindahkan origin/main tanpa menyentuh branch lokal, lalu status melaporkan main tertinggal satu commit — laporan behind pun cuma sejauh pengetahuan lokal, karena remote bisa saja sudah bergerak lagi, seperti diingatkan di chapter Remote-Tracking Branch . Model fork memakai prinsip yang sama dengan satu tambahan: dua remote dalam satu clone. Bedanya dibedah khusus di chapter Fork dan Upstream .

Peran di Dalam Tim #

Workflow mana pun dipilih, tiga peran hampir selalu muncul. Perannya bukan jabatan resmi — satu orang sering memegang dua peran sekaligus di tim kecil.

PeranHak utamaTanggung jawab
Maintainermerge ke branch utama, atur aksesmenjaga mutu dan arah repository
Kontributorpush branch pekerjaanmenyerahkan perubahan siap review
Reviewerkomentar dan persetujuan di pull requestmemeriksa kebenaran dan keterbacaan

Maintainer adalah penjaga pintu: ke main hanya masuk pekerjaan yang sudah matang, dan keputusan merge-nya menentukan kesehatan repository. Kontributor tidak harus punya akses tulis ke branch utama — cukup branch pekerjaan sendiri, baik di repository bersama (model shared) maupun di fork pribadi (model fork). Reviewer membaca diff, menandai masalah, dan memberi persetujuan; di banyak tim maintainer sekaligus menjadi reviewer terakhir.

Siklus Umum: Branch, Commit, Push, Review, Merge #

Pola dasar yang diulang setiap anggota tim — di workflow mana pun — berbentuk lingkaran, bukan garis. Pekerjaan lahir di branch terpisah agar main tidak pernah menampung setengah jadi, dikirim ke remote agar orang lain bisa melihatnya, direview sebelum percaya, baru digabung:

Enam putaran percakapan di atas adalah kerangka yang sama untuk semua workflow di section ini. Dari sisi kontribator: branch (materi Konsep Branch ), commit, lalu push dengan opsi -u agar branch lokal terikat ke remote — ikatan yang dijelaskan di Tracking Branch . Dari sisi maintainer: fetch, periksa rentang main..fitur dan diff-nya, lalu git merge . Putaran terakhir menutup lingkaran: kontribator menarik main yang sudah berisi hasil merge miliknya, sebelum memulai branch berikutnya.

Empat workflow di bab-bab berikutnya membedah variasi siklus ini; uraian resmi dari sudut pandang Git bisa dibaca di Pro Git: Distributed Workflows .

Peta Section Kolaborasi Tim #

Section ini berjalan dari anatomi ke workflow, lalu peralatan pendukungnya. Tabel berikut memetakan 13 chapter-nya:

ChapterFokus
Workflow Kolaborasimodel shared vs fork, peran, siklus dasar
Fork dan Upstreamdua remote dalam satu clone dan sinkronisasinya
Pull Requestanatomi PR dan menyiapkan PR berkualitas
Code Reviewproses review, komentar membangun, tanggapan
Feature Branch Workflowsiklus lengkap semua-kerja-di-branch
GitHub Flowworkflow ringan berpusat pada deploy
GitFlowmodel branch untuk rilis terjadwal
Trunk-Based Developmentintegrasi berkelanjutan tanpa branch panjang
Menjaga Branch Tetap Sinkronmerawat branch berumur panjang terhadap main
Menyelesaikan Konflik Kolaborasikonflik lintas rekan dan penyelesaiannya
Commit Conventionskesepakatan penulisan pesan tim
Protected Branchesmelindungi main lewat pengaturan platform
Koordinasi Releasemenyatukan workflow dan rilis

Mulai paling natural dari perbedaan paling mendasar: bagaimana seorang kontribator tanpa akses tulis tetap bisa menyumbang — dua remote, origin dan upstream, dalam satu clone. Chapter berikutnya membuktikannya dengan Git murni di sandbox.