Fitur daftar tugas selesai dan tertutup rapi di branch-nya, dengan dua commit yang masing-masing satu langkah. Sekarang tibalah paruh kedua siklus: kembali ke main, membuktikan bahwa fitur memang belum ada di sana, lalu menyatukan lewat merge --no-ff supaya fitur terbaca sebagai satu unit di graf riwayat. Setelah itu kita membereskan bekas-bekasnya — branch lama dihapus, fitur dicatat di changelog, dan rilis pertama ditandai tag v0.1.0.

Kembali ke main #

bash
git switch main

Output yang Dihasilkan:

text
Switched to branch 'main'

Berpindah branch mengganti isi working directory mengikuti commit yang ditunjuk — perilaku yang dibedah di Berpindah Branch . Bukti bahwa fitur belum sampai ke main:

bash
cat src/app.txt

Output yang Dihasilkan:

text
Aplikasi Catatan Tugas
======================

(draf awal — fitur menyusul)

Aplikasi di main masih versi 0 persis seperti saat commit basis dibuat. Dua commit fitur hanya hidup di fitur/tugas — inilah isolasi yang dijanjikan workflow feature branch: selama fitur belum digabungkan, jalur tayang tidak berubah satu baris pun.

Menyatukan dengan merge –no-ff #

bash
git merge --no-ff fitur/tugas -m "Gabungkan fitur daftar tugas"

Output yang Dihasilkan:

text
Merge made by the 'ort' strategy.
 src/app.txt | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Tiga baris keluaran ini layak dibedah satu per satu:

  1. Merge made by the 'ort' strategy. — commit penggabung dibuat. Sebenarnya main bisa dimajukan cepat (fast-forward) ke ujung fitur/tugas; opsi --no-ff justru melarangnya dan memaksa commit merge berparent dua dilahirkan.
  2. src/app.txt | 5 ++++- — diffstat antara main dan hasil gabungan: lima baris berubah di satu berkas.
  3. 1 file changed, 4 insertions(+), 1 deletion(-) — rincian diffstat: empat baris tugas masuk, satu baris penanda draf keluar — persis isi fitur yang kita kerjakan di Bagian 1.

Pesan -m "Gabungkan fitur daftar tugas" menggantikan pesan bawaan Merge branch 'fitur/tugas' dengan kalimat yang menyebut fiturnya — pembaca riwayat cukup membaca satu baris untuk tahu isi gelembung.

Gelembung Fitur pada Graf Riwayat #

Bentuk riwayat setelah penggabungan:

bash
git log --oneline --graph --decorate

Output yang Dihasilkan:

text
*   4074715 (HEAD -> main) Gabungkan fitur daftar tugas
|\  
| * e64b462 (fitur/tugas) Isi daftar tugas awal
| * 0a15ce0 Tambah kerangka daftar tugas
|/  
* ae67134 Rintis aplikasi catatan tugas

Cara membacanya: baris * berindentasi dua spasi dengan tanda |\ di bawahnya adalah commit merge berparent dua — puncak gelembung. Garis | di kolom kiri mengurung kedua commit fitur, lalu bertemu kembali di |/ menuju commit basis. Dekorasi (HEAD -> main) menandai posisi kita; (fitur/tugas) masih tampil karena branch itu belum dihapus — urusannya sebentar lagi. Hash di mesin kita berbeda, komposisinya tidak.

Merapikan Branch dan Mencatat Changelog #

Branch fitur sudah tergabung penuh ke main, jadi tidak ada alasan menyimpannya:

bash
git branch -d fitur/tugas

Output yang Dihasilkan:

text
Deleted branch fitur/tugas (was e64b462).

Opsi -d menolak menghapus branch yang belum tergabung — pengaman yang dibahas di Menghapus Branch . Nama branch boleh hilang karena hash ujungnya tetap tercatat di pesan keluaran dan di riwayat merge.

Fitur yang masuk ke main layak dicatat. Buat changelog pertama:

bash
mkdir -p docs
printf '# Changelog\n\n## v0.1.0 — 2026-11-03\n\n- Tambah fitur daftar tugas pada `src/app.txt`.\n' > docs/changelog.md
cat docs/changelog.md

Output yang Dihasilkan (perintah cat):

text
# Changelog

## v0.1.0 — 2026-11-03

- Tambah fitur daftar tugas pada `src/app.txt`.

Catatan perubahan seperti ini dibahas sebagai kebiasaan rilis di Changelog . Simpan sebagai commit dengan prefix docs: sesuai konvensi pesan dari Conventional Commits :

bash
git add docs/changelog.md
git commit -m "docs: catat fitur daftar tugas"

Output yang Dihasilkan:

text
[main 6eb32b4] docs: catat fitur daftar tugas
 1 file changed, 5 insertions(+)
 create mode 100644 docs/changelog.md

Menandai v0.1.0 #

Rilis pertama layak ditandai supaya bisa dirujuk kapan saja tanpa menghafal hash:

bash
git tag -a v0.1.0 -m "Rilis awal aplikasi catatan tugas"
git tag -n1

Output yang Dihasilkan (perintah git tag -n1):

text
v0.1.0          Rilis awal aplikasi catatan tugas

Perintah git tag -a itu sendiri tidak mencetak apa pun; git tag -n1 adalah alat buktinya — ia menampilkan setiap tag beserta satu baris pesannya. Penanda -a membuat annotated tag berisi nama penanda, tanggal, dan pesan — bedanya dengan lightweight tag diuraikan di Annotated Tag . Nomor 0.1.0 mengikuti penalaran SemVer untuk rilis pertama yang masih awal — materinya di Semantic Versioning .

Dua bagian proyek ini menutup dua kebiasaan inti: siklus fitur (branch → commit logis → merge --no-ff → hapus branch) dan pencatatannya (changelog → tag). Semuanya berjalan mulus karena satu syarat terpenuhi: selama fitur dikerjakan, main tidak bergerak. Bagian 3 melanggar syarat itu — main ikut menyunting baris yang sama dengan branch fitur, dan konflik sungguhan ikut serta: Bagian 3: Menangani Merge Conflict .