- Bab 7 dari 8
- 30 menit
- 4 soal kuis
Remote dan Kolaborasi: Push, Pull, dan Workflow Tim
Di bab ini (11 bagian)
Tujuan bab ini
- Menautkan repositori lokal ke remote dengan
git remote add, lalu mengirim cabang pertama memakaigit push -u. - Membedakan
git fetch(hanya mengunduh) dangit pull(mengunduh lalu menggabungkan), serta membaca status upstream. - Menjelaskan beda Git dengan GitHub, GitLab, dan Bitbucket, plus alur fork dan pull request.
- Memilih workflow tim (GitHub Flow, Git Flow, trunk-based) sesuai ukuran tim dan cara rilisnya.
Lokal dan remote
Sampai bab sebelumnya, semua yang kamu lakukan terjadi di laptop sendiri: commit, branch, merge, semuanya tersimpan di folder .git. Itu sudah cukup buat kerja sendirian, tapi begitu ada teman satu tim, kalian butuh satu tempat bersama untuk bertukar commit. Tempat itu namanya repositori remote, yaitu salinan repositori yang tinggal di server, biasanya di GitHub, GitLab, atau Bitbucket.
Ingat, Git itu terdistribusi. Remote bukan "pusat" yang wajib ada; ia hanya salinan lain yang kebetulan disepakati sebagai titik temu. Alurnya sederhana:
git pushmengirim commit lokal ke server.git fetchdangit pullmengambil pembaruan dari server.
Menautkan remote: git remote
Repositori baru hasil git init belum kenal server mana pun. Cek dulu dengan git remote -v; kalau tidak keluar apa-apa, berarti belum ada remote. Tautkan dengan:
origin cuma nama panggilan (alias) untuk URL tadi. Namanya bebas, tapi origin adalah nama baku untuk remote utama, jadi hampir semua tutorial dan tim memakainya. Opsi -v (verbose) menampilkan URL untuk fetch dan push.
Kalau kamu memulai dari repositori yang sudah ada di server, pakai git clone <url>. Clone menyalin seluruh riwayat sekaligus mengatur origin secara otomatis, jadi kamu tidak perlu git remote add lagi.
Push pertama dan upstream
Kirim cabang main ke server untuk pertama kalinya:
Opsi -u (kependekan dari --set-upstream) menetapkan upstream, yaitu cabang remote yang "dipasangkan" dengan cabang lokalmu. Setelah itu kamu cukup mengetik git push atau git pull tanpa menyebut origin main lagi. Tanpa upstream, Git akan menolak git push polos:
Cabang remote yang dilacak muncul sebagai origin/main. Ini bukan cabang tempat kamu bekerja, melainkan catatan lokal tentang posisi main di server pada saat terakhir kamu berkomunikasi dengannya. Lihat pasangan upstream tiap cabang dengan git branch -vv:
fetch vs pull
Ini bagian yang paling sering tertukar.
git fetch originhanya mengunduh commit baru dari server dan memperbaruiorigin/main. Cabangmainmilikmu dan isi folder kerjamu tidak disentuh sama sekali.git pull origin mainsetara dengangit fetchdiikutigit merge origin/mainke cabang yang sedang aktif.
Misalnya teman kamu, Dina, baru saja push satu commit. Setelah git fetch, git status memberi tahu bahwa kamu tertinggal:
File di folder kerjamu masih versi lama. Baru setelah git pull, commit Dina masuk ke main:
Kapan pakai fetch? Saat kamu ingin mengintip dulu apa yang berubah (git log main..origin/main) sebelum memutuskan menggabung. Pull lebih praktis untuk sehari-hari, fetch lebih aman saat kamu sedang di tengah pekerjaan.
Kalau kamu dan teman sama-sama sudah commit, cabangnya diverged. Push-mu akan ditolak dengan pesan ! [rejected] main -> main (fetch first), dan solusinya adalah pull dulu, bereskan konflik kalau ada, lalu push lagi. Di Git versi baru, pull pada cabang yang diverged bisa berhenti dengan pesan You have divergent branches; pilih sekali caranya, misalnya git config --global pull.rebase false untuk merge atau true untuk rebase.
Git bukan GitHub
Kesalahpahaman paling umum: menganggap Git dan GitHub itu sama. Git adalah perangkat lunak kontrol versi yang berjalan di komputermu. GitHub, GitLab, dan Bitbucket adalah layanan yang menyimpan repositori Git di internet lalu menambahkan fitur kolaborasi di atasnya.
| Platform | Ciri khas | Cocok untuk |
|---|---|---|
| GitHub | Komunitas open source terbesar; Pull Request, Issues, Actions (CI/CD), Projects | Proyek publik, portofolio, komunitas |
| GitLab | Platform DevOps menyeluruh, bisa self-hosted; istilahnya Merge Request | Perusahaan yang ingin kontrol penuh atas server |
| Bitbucket | Terintegrasi dengan Jira dan Confluence, punya Bitbucket Pipelines | Tim yang sudah memakai Jira |
Alur fork dan pull request
Kamu tidak punya izin push ke repositori orang lain. Cara standar berkontribusi ke proyek open source adalah:
- Fork: salin repositori itu ke akunmu lewat antarmuka web.
- Clone: unduh hasil fork ke laptop dengan
git clone. - Branch: buat cabang khusus, misalnya
git switch -c fix/typo-readme. - Commit & push: simpan perubahan, lalu
git push -u origin fix/typo-readmeke fork-mu. - Pull request: ajukan permintaan penggabungan ke repositori asal.
- Review & merge: pemelihara meninjau, memberi masukan, lalu menggabungkan.
GitHub dan Bitbucket menyebutnya Pull Request (PR), sedangkan GitLab menyebutnya Merge Request (MR). Konsep dan tujuannya sama persis. Di tim sendiri, kamu biasanya tidak perlu fork: cukup buat cabang di repositori bersama, push, lalu buka PR.
Workflow tim
Semua anggota tim perlu sepakat cara memakai cabang. Ada beberapa model populer:
- Feature branch: dasar dari semua model di bawah. Setiap fitur atau perbaikan dikerjakan di cabang sendiri (
feature/login,bugfix/email-kosong), lalu digabung lewat PR. - Git Flow: cabang
main,develop,feature/*,release/*, danhotfix/*. Paling lengkap dan formal. Cocok untuk produk dengan versi rilis terjadwal, misalnya aplikasi mobile yang rilis tiap bulan. - GitHub Flow: hanya
mainplusfeature/*. Setiap fitur dibuat cabang, di-review lewat PR, lalu langsung dirilis. Cocok untuk aplikasi web dengan deploy berkelanjutan. - Trunk-based: semua orang mengintegrasikan ke
mainminimal sekali sehari, dengan cabang yang umurnya sangat pendek, dijaga pengujian otomatis. Cocok untuk tim matang dengan CI/CD kuat.
Tidak ada model yang paling benar. Tim kecil yang baru belajar biasanya paling nyaman dengan GitHub Flow karena aturannya sedikit.
Kesalahan umum
- Mengira
git fetchsudah memperbarui file. Fetch hanya memperbaruiorigin/main; jalankangit mergeataugit pullagar cabangmu ikut maju. - Lupa
-upada push pertama. Akibatnyagit pushpolos ditolak karena belum ada upstream. - Push tanpa pull. Kalau teman sudah push duluan, push-mu ditolak. Biasakan pull sebelum push.
- Langsung push ke
maindi tim. Lewat PR, perubahan sempat di-review dulu. - Menyamakan Git dengan GitHub. Git tetap jalan tanpa internet dan tanpa akun apa pun.
Coba sendiri
Kamu bisa mensimulasikan server tanpa akun GitHub: repositori bare di folder lokal bisa jadi remote.
Output terakhir kira-kira (hash-mu akan berbeda):
Sekarang jadi "teman" yang meng-clone dan push:
git status akan bilang Your branch is behind 'origin/main' by 1 commit. Cek cat README.md, isinya masih satu baris. Jalankan git pull, lalu cat README.md lagi: baris Dina sudah muncul.
Rangkuman
git remote add origin <url>menautkan remote;git remote -vmenampilkannya;git clonemengaturoriginotomatis.git push -u origin mainmengirim cabang sekaligus menetapkan upstream, sehingga push dan pull berikutnya cukup tanpa argumen.git fetchhanya mengunduh dan memperbaruiorigin/main;git pull= fetch + merge ke cabang aktif.- Git adalah alatnya; GitHub, GitLab, dan Bitbucket adalah layanan hosting dengan fitur kolaborasi.
- Kontribusi ke proyek orang: fork, clone, branch, commit dan push, pull request, review dan merge.
- Pilih workflow sesuai tim: Git Flow untuk rilis terjadwal, GitHub Flow untuk deploy berkelanjutan, trunk-based untuk tim dengan CI/CD kuat.
Slide 22 sampai 26 dari deck Git. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Kuis (4 soal)
Cek pemahaman
1Kamu menjalankan perintah berikut. Pernyataan mana yang benar tentang repositori lokalmu?
$ git fetch $ git status 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)2Apa fungsi opsi -u pada perintah git push -u origin main?
3GitLab menyebut pengajuan penggabungan sebagai Merge Request, sedangkan GitHub menyebutnya Pull Request.
4Tim web kamu deploy beberapa kali sehari dan hanya ingin satu cabang utama plus cabang fitur yang di-review lewat PR. Model workflow yang paling pas adalah
