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 ke main dengan --no-ff;
  • kategori — fitur kedua yang sengaja dibenturkan dengan suntingan di main pada 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:

text
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 jam

Riwayat 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 #

BagianFokusBekal utamaPerkiraan waktu
Bagian 1: Membuat Feature Branchbasis tenang di main, branch fitur/tugas, dua commit bertahapMembuat Branch , git switch15 menit
Bagian 2: Menggabungkan Perubahanmerge --no-ff, hapus branch, changelog, tag v0.1.0Fast-Forward Merge , git merge , Menghapus Branch15 menit
Bagian 3: Menangani Merge Conflictkonflik terkontrol pada baris judul dan penyelesaiannyaMerge Conflicts , Menyelesaikan Merge Conflicts25 menit
Bagian 4: Merapikan Riwayatlima commit eksperimen menjadi satu commit bersihInteractive Rebase , Menggabungkan Commit25 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:

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:

text
catatan-tugas/
├── README.md
├── docs/
│   └── changelog.md
└── src/
    └── app.txt

Berkas 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 .