Teori workflow feature branch terasa mulus saat dibaca: buat branch, kerjakan fitur, gabungkan ke main, ulangi. Realitasnya, dua situasi hampir selalu mengusik kenikmatan itu. Pertama, dua jalur pekerjaan menyentuh baris yang sama sehingga Git menolak menebak — merge conflict. Kedua, fitur yang dikerjakan seharian berakhir sebagai tumpukan commit wip yang hanya bermakna bagi penulisnya pada malam itu. Proyek ini melatih siklus fitur yang utuh pada satu repository kecil, dan kedua situasi pengusik itu sengaja dihadirkan lalu dituntaskan dengan tertib.
Apa yang Kita Bangun #
Panggung latihannya adalah aplikasi catatan tugas versi teks. Aplikasi ini bukan program — seluruh isinya berkas src/app.txt yang tumbuh lewat tiga fitur, didampingi README.md dan docs/changelog.md. Fokus proyek bukan pada aplikasinya, melainkan pada riwayat Git yang ditinggalkannya. Tiga fitur tumbuh bertahap dengan tiga karakter berbeda:
- daftar tugas — fitur pertama yang dikerjakan bersih dari awal di branch
fitur/tugas, lalu digabungkan kemaindengan--no-ff; - kategori — fitur kedua yang sengaja dibenturkan dengan suntingan di
mainpada baris judul yang sama, sehingga konflik nyata harus diurai; - mode fokus — fitur ketiga yang lahir sebagai lima commit eksperimen berantakan, lalu dirapikan menjadi satu commit bersih sebelum masuk
main.
Isi akhir src/app.txt yang kita tuju:
Aplikasi Tugas Harian
======================
## Daftar Tugas
- [ ] Susun jadwal harian
- [ ] Belajar Git satu jam
## Kategori
- kerja
- belajar
- rumah
## Mode Fokus
Satu tugas pada satu waktu: tuliskan tugas yang sedang dikerjakan,
abaikan sisanya sampai selesai.
Tugas aktif: Belajar Git satu jamRiwayat akhirnya terdiri dari sembilan commit: satu commit basis, satu gelembung merge yang mengurung dua commit fitur daftar tugas, satu commit changelog yang bertanda v0.1.0, satu merge penyelesaian konflik berparent dua, dan satu commit bersih feat: mode fokus yang masuk lewat fast-forward. Graf lengkapnya dibedah pada bagian terakhir.
Peta Empat Bagian #
| Bagian | Fokus | Bekal utama | Perkiraan waktu |
|---|---|---|---|
| Bagian 1: Membuat Feature Branch | basis tenang di main, branch fitur/tugas, dua commit bertahap | Membuat Branch , git switch | 15 menit |
| Bagian 2: Menggabungkan Perubahan | merge --no-ff, hapus branch, changelog, tag v0.1.0 | Fast-Forward Merge , git merge , Menghapus Branch | 15 menit |
| Bagian 3: Menangani Merge Conflict | konflik terkontrol pada baris judul dan penyelesaiannya | Merge Conflicts , Menyelesaikan Merge Conflicts | 25 menit |
| Bagian 4: Merapikan Riwayat | lima commit eksperimen menjadi satu commit bersih | Interactive Rebase , Menggabungkan Commit | 25 menit |
Total waktu pengerjaan sekitar 60–90 menit — cukup untuk 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:
- pembuatan dan perpindahan branch — Membuat Branch dan git switch dari section Branch dan Merging;
- penggabungan dan bentuk riwayatnya — Fast-Forward Merge serta git merge ;
- penyelesaian konflik — Menyelesaikan Merge Conflicts ;
- perapian riwayat — Interactive Rebase dan Menggabungkan Commit dari section Rebasing dan Riwayat Lanjutan;
- kerangka siklus fiturnya sendiri — chapter Workflow Feature Branch dari section Praktik Workflow, yang proyek ini jalankan langkah demi langkah.
Alat yang dipakai adalah Git 2.23 ke atas (git switch tersedia sejak versi itu); seluruh sesi diuji nyata pada Git 2.47.3.
Struktur Proyek dan Transkrip #
Repository latihan kita bernama catatan-tugas dengan susunan sederhana:
catatan-tugas/
├── README.md
├── docs/
│ └── changelog.md
└── src/
└── app.txtBerkas README.md, src/app.txt, dan docs/changelog.md yang menyertai halaman proyek ini memuat kondisi akhir repository — bandingkan isinya dengan hasil kerja kita setelah Bagian 4 selesai.
Siklus teorinya sudah di tangan, panggungnya sudah disiapkan. Mari kita mulai dari basis yang tenang: Bagian 1: Membuat Feature Branch .
Siapkan proyek dasar dan buka branch fitur pertama untuk dikembangkan.
Buka → # Bagian 2: Menggabungkan PerubahanGabungkan fitur selesai ke main dan amankan riwayat penggabungannya.
Buka → # Bagian 3: Menangani Merge ConflictTimbulkan konflik sungguhan lalu selesaikan dengan prosedur yang tertib.
Buka → # Bagian 4: Merapikan RiwayatRapikan commit eksperimen menjadi riwayat ringkas sebelum integrasi.
Buka →