Proyek 01 dan Proyek 02 dikerjakan satu tangan: seluruh commit lahir dari satu repository, satu identitas, tanpa satu pun remote. Penutup Proyek 02 menjanjikan bab berikutnya — repository yang dihubungkan ke remote dan dikerjakan lebih dari satu orang. Proyek ini membayar janji itu: Budi dan Siti menggarap aplikasi kas warung yang sama, bertukar pekerjaan lewat sebuah repository pusat, dan mengalami dua gesekan klasik kolaborasi — push yang ditolak serta konflik pada berkas yang sama. Seluruh “server” kita hanyalah folder bare repository di dalam disk, cukup jujur untuk mensimulasikan server hosting, tanpa akun dan tanpa jaringan.
Apa yang Kita Bangun #
Panggungnya adalah aplikasi kas warung versi teks dengan tiga berkas yang tumbuh melalui dua tangan. Budi merintis README.md dan src/app.txt versi 1, lalu Siti masuk membawa fitur. Riwayatnya tumbuh lewat empat babak:
- aplikasi kas v1 — Budi menyiapkan pusat bare
pusat-kas.git, meng-clone-nya, mengisi aplikasi awal, lalu mengirim commit pertama; - daftar transaksi — fitur pertama Siti dipertukarkan lewat siklus push → fetch → merge, lengkap dengan bukti bahwa fetch tidak menyentuh branch lokal;
- penyelarasan README — dua suntingan pada paragraf yang sama berujung push rejected, konflik, dan satu merge commit hasil urai bersama;
- laporan harian — branch
fitur/laporandikerjakan berdua di dua clone, digabungkan kemaindengan--no-ff, lalu dibersihkan sampai tidak menyisakan jejak.
Isi akhir src/app.txt yang kita tuju:
Aplikasi Kas v1
===============
Catat pemasukan dan pengeluaran warung setiap hari.
## Transaksi
- 2026-11-16 — Penjualan pagi: Rp45.000
- 2026-11-16 — Beli bahan: Rp12.000
## Laporan
Total penjualan: Rp45.000
Total pengeluaran: Rp12.000
Saldo: Rp33.000Riwayat akhirnya terdiri dari sembilan commit milik dua penulis bergantian, ditutup graf berbentuk dua gelembung merge: satu gelembung penyelesaian konflik buatan Siti, satu gelembung --no-ff fitur laporan buatan Budi. Kedua clone berakhir pada graf yang identik — bukti bahwa satu titik temu berhasil menyatukan dua salinan pekerjaan.
Peta Empat Bagian #
| Bagian | Fokus | Bekal utama | Perkiraan waktu |
|---|---|---|---|
| Bagian 1: Menghubungkan Remote | pusat bare, dua clone, commit pertama menyebar ke rekan | Konsep Remote , git clone | 15 menit |
| Bagian 2: Push dan Fetch | siklus giliran: push, fetch, merge, pull | git fetch , git pull , git push | 20 menit |
| Bagian 3: Mengatasi Push Rejected | reproduksi penolakan push, konflik README, penyelesaian bersama | Push Rejected , Menyelesaikan Konflik Kolaborasi | 25 menit |
| Bagian 4: Sinkronisasi Branch | branch fitur di remote, tracking otomatis, pembersihan | Remote-Tracking Branch , Menghapus Remote Branch | 25 menit |
Total waktu pengerjaan sekitar 80–90 menit — satu sesi duduk yang utuh. Setiap bagian berdiri di atas keadaan akhir bagian sebelumnya, jadi kerjakan berurutan dari Bagian 1.
Prasyarat #
Materi berikut perlu dikuasai sebelum mulai; setiap konsep dipakai tanpa dijelaskan ulang di sini:
- konsep remote dan bare repository sebagai titik temu — Konsep Remote dari section Remote Repository;
- asal-usul
originpada hasil clone — git clone ; - tiga perintah pertukaran — git fetch , git pull , dan git push ;
- ikatan branch lokal ke remote — Upstream Branch dan Remote-Tracking Branch ;
- diagnose penolakan push — Push Rejected ;
- ritual penyelesaian konflik saat kolaborasi — Menyelesaikan Konflik Kolaborasi dari section Kolaborasi Tim;
- penggabungan dasar — git merge .
Alat yang dipakai adalah Git 2.23 ke atas; seluruh sesi diuji nyata pada Git 2.47.3.
Struktur Proyek dan Transkrip #
Panggung kolaborasi kita bernama kolaborasi-kas dengan susunan tiga salinan:
kolaborasi-kas/
├── pusat-kas.git/ ← remote pusat (bare, tanpa working tree)
├── budi/
│ └── kas/ ← clone milik Budi
└── siti/
└── kas/ ← clone milik SitiBerkas README.md dan src/app.txt yang menyertai halaman proyek ini memuat kondisi akhir repository — bandingkan isinya dengan hasil kerja kita setelah Bagian 4 selesai.
Panggung dan dua aktornya sudah siap. Mari kita pasang “server” pertama kita: Bagian 1: Menghubungkan Remote .
Bangun repository pusat tanpa working tree lalu hubungkan dua clone kontributor.
Buka → # Bagian 2: Push dan FetchTukar pekerjaan antar kontributor dengan push dan fetch.
Buka → # Bagian 3: Mengatasi Push RejectedReproduksi penolakan non-fast-forward lalu selesaikan tanpa kehilangan commit.
Buka → # Bagian 4: Sinkronisasi BranchKelola branch fitur di dua clone dan sinkronkan hingga bersih.
Buka →