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 #
git switch mainOutput yang Dihasilkan:
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:
cat src/app.txtOutput yang Dihasilkan:
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 #
git merge --no-ff fitur/tugas -m "Gabungkan fitur daftar tugas"Output yang Dihasilkan:
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:
Merge made by the 'ort' strategy.— commit penggabung dibuat. Sebenarnyamainbisa dimajukan cepat (fast-forward) ke ujungfitur/tugas; opsi--no-ffjustru melarangnya dan memaksa commit merge berparent dua dilahirkan.src/app.txt | 5 ++++-— diffstat antaramaindan hasil gabungan: lima baris berubah di satu berkas.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:
git log --oneline --graph --decorateOutput yang Dihasilkan:
* 4074715 (HEAD -> main) Gabungkan fitur daftar tugas
|\
| * e64b462 (fitur/tugas) Isi daftar tugas awal
| * 0a15ce0 Tambah kerangka daftar tugas
|/
* ae67134 Rintis aplikasi catatan tugasCara 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:
git branch -d fitur/tugasOutput yang Dihasilkan:
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:
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.mdOutput yang Dihasilkan (perintah cat):
# 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
:
git add docs/changelog.md
git commit -m "docs: catat fitur daftar tugas"Output yang Dihasilkan:
[main 6eb32b4] docs: catat fitur daftar tugas
1 file changed, 5 insertions(+)
create mode 100644 docs/changelog.mdMenandai v0.1.0 #
Rilis pertama layak ditandai supaya bisa dirujuk kapan saja tanpa menghafal hash:
git tag -a v0.1.0 -m "Rilis awal aplikasi catatan tugas"
git tag -n1Output yang Dihasilkan (perintah git tag -n1):
v0.1.0 Rilis awal aplikasi catatan tugasPerintah 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
.