main kini memuat empat commit konten yang stabil — keadaan yang layak dipertahankan sambil mencoba hal baru. Fitur berikutnya, glosarium istilah Git, akan dikerjakan lewat jalur yang sampai sejauh ini baru teori: branch. Bagian ini mengulang ritme feature branch dalam skala paling kecil — satu branch, satu commit, satu merge — dengan --no-ff supaya penyatuannya tercatat sebagai merge commit yang terlihat di riwayat. Teori di balik setiap langkah sudah dibahas tuntas di section Branch dan Merging
; di sini kita menjalaninya sendiri.
Empat langkah ritmenya dapat dipetakan sebelum mengetik:
Branch dibuat, diisi, lalu digabungkan — dan label branch yang sudah menunaikan tugasnya dibersihkan. Empat langkah itulah yang dijalankan satu per satu berikut ini.
Membuat Branch Fitur #
Satu perintah membuat branch sekaligus berpindah ke sana:
git switch -c fitur/tambah-glosariumOutput yang Dihasilkan:
Switched to a new branch 'fitur/tambah-glosarium'Opsi -c menggabungkan dua aksi: buat branch fitur/tambah-glosarium dari posisi main saat itu, lalu pindahkan HEAD ke branch baru tersebut. Nama branch memakai format fitur/nama-fitur — deskriptif, mudah dicari, dan lazim di proyek nyata. Bentuk modern git switch -c ini dibanding git checkout -b dibahas pada chapter git switch
.
Menyusun Glosarium #
Fitur ini menambahkan satu dokumen berisi lima istilah Git dasar yang paling sering muncul di catatan:
cat > docs/glosarium.md <<'EOF'
# Glosarium Git
Istilah Git dasar yang paling sering muncul di catatan ini.
| Istilah | Arti |
| --- | --- |
| repository | tempat Git menyimpan seluruh riwayat proyek, berada di dalam folder `.git` |
| staging area | area penampung sementara perubahan yang akan masuk ke commit berikutnya |
| commit | snapshot proyek yang sudah disimpan beserta pesan penjelasnya |
| branch | garis pengembangan mandiri yang menampung rangkaian commit |
| tag | penanda tetap pada satu commit, lazim dipakai untuk nomor versi |
EOFcat docs/glosarium.mdOutput yang Dihasilkan:
# Glosarium Git
Istilah Git dasar yang paling sering muncul di catatan ini.
| Istilah | Arti |
| --- | --- |
| repository | tempat Git menyimpan seluruh riwayat proyek, berada di dalam folder `.git` |
| staging area | area penampung sementara perubahan yang akan masuk ke commit berikutnya |
| commit | snapshot proyek yang sudah disimpan beserta pesan penjelasnya |
| branch | garis pengembangan mandiri yang menampung rangkaian commit |
| tag | penanda tetap pada satu commit, lazim dipakai untuk nomor versi |Dokumen baru perlu terdaftar di daftar isi, jadi README.md ikut disunting di branch yang sama:
cat > README.md <<'EOF'
# Buku Catatan
Kumpulan catatan belajar saya.
## Daftar Isi
- [Panduan Struktur Catatan](docs/panduan.md)
- [Glosarium Git](docs/glosarium.md)
EOFcat README.mdOutput yang Dihasilkan:
# Buku Catatan
Kumpulan catatan belajar saya.
## Daftar Isi
- [Panduan Struktur Catatan](docs/panduan.md)
- [Glosarium Git](docs/glosarium.md)Menyimpan Commit di Branch #
Status kini memuat dua jenis perubahan sekaligus:
git statusOutput yang Dihasilkan:
On branch fitur/tambah-glosarium
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
docs/glosarium.md
no changes added to commit (use "git add" and/or "git commit -a")Baris pertama mengabarkan posisi: On branch fitur/tambah-glosarium — semua yang disimpan sekarang masuk ke branch fitur, bukan main. Di bawahnya, README.md berstatus modified dan docs/glosarium.md untracked. Keduanya satu satuan kerja yang sama, jadi satu commit sudah tepat:
git add docs/glosarium.md README.md
git commit -m "docs: tambahkan glosarium istilah Git dasar"Output yang Dihasilkan (perintah terakhir):
[fitur/tambah-glosarium 68e553b] docs: tambahkan glosarium istilah Git dasar
2 files changed, 12 insertions(+)
create mode 100644 docs/glosarium.mdNama di dalam kurung siku kini fitur/tambah-glosarium — bukti tertulis bahwa commit mendarat di branch fitur. Dua berkas berubah dalam satu commit karena keduanya menyatu menjadi satu fitur.
Branch yang Berbeda, Berkas yang Berbeda #
Sekarang datang momen yang menjelaskan kenapa branch disebut terisolasi. Kembali ke main:
git switch mainOutput yang Dihasilkan:
Switched to branch 'main'Baca README.md di posisi ini:
cat README.mdOutput yang Dihasilkan:
# Buku Catatan
Kumpulan catatan belajar saya.
## Daftar Isi
- [Panduan Struktur Catatan](docs/panduan.md)Daftar isi di main hanya memuat satu tautan — glosarium tidak ada. Periksa juga isi folder docs/:
ls docsOutput yang Dihasilkan:
panduan.mddocs/glosarium.md benar-benar tidak hadir di main: berkas itu hidup hanya di commit pada branch fitur, dan folder kerja menampilkan isi branch yang aktif — perilaku yang dibedah pada chapter Branch dan Commit
. Kembali ke branch fitur, semua kembali hadir:
git switch fitur/tambah-glosarium
ls docsOutput yang Dihasilkan (kedua perintah):
Switched to branch 'fitur/tambah-glosarium'
glosarium.md
panduan.mdMenggabungkan ke main dengan –no-ff #
Pekerjaan di branch sudah selesai dan tersimpan. Untuk menyatukannya, berdiri di tujuan dulu — main — lalu panggil merge:
git switch main
git merge --no-ff fitur/tambah-glosarium -m "Merge branch 'fitur/tambah-glosarium'"Output yang Dihasilkan (perintah terakhir):
Merge made by the 'ort' strategy.
README.md | 1 +
docs/glosarium.md | 11 +++++++++++
2 files changed, 12 insertions(+)
create mode 100644 docs/glosarium.mdBaris Merge made by the 'ort' strategy mengabarkan bahwa Git menyatukan kedua jalur lewat strategi tiga arah bawaan, lalu membuat commit gabungan. Opsi --no-ff memaksanya: tanpa opsi itu, main yang tidak bergerak sejak branch dibuat akan cukup maju cepat ke commit fitur — tanpa jejak bahwa dulu ada branch. Dengan --no-ff, merge commit tetap dibuat agar fitur dan penyatuannya terbaca di riwayat; perbandingan keduanya dibahas pada Fast-Forward Merge
dan Three-Way Merge
. Seluruh opsi merge lainnya terdokumentasi di dokumentasi resmi git merge
.
Membaca Bentuk Riwayat Setelah Merge #
Bentuk riwayat terbaik dilihat dengan graf:
git log --graph --onelineOutput yang Dihasilkan:
* c444343 Merge branch 'fitur/tambah-glosarium'
|\
| * 68e553b docs: tambahkan glosarium istilah Git dasar
|/
* ecb3bec docs: lengkapi README dengan daftar isi
* fd7e5b9 docs: tambahkan panduan struktur catatan
* d047b69 chore: tambahkan .gitignore
* 6c59970 docs: rintis buku catatanGraf tersebut dibaca dari atas:
* c444343— merge commit di puncak; commit ini punya dua induk:ecb3becdarimaindan68e553bdari branch fitur.|\dan|/— dua garis yang terpisah lalu menyatu; itulah visual dari kehidupan branchfitur/tambah-glosarium.| * 68e553b— commit fitur berdiri di jalur samping, bukan di jalur utama.- Empat baris terakhir — sejarah
mainyang lurus sebelum branch dibuat.
Tanpa --no-ff, baris merge commit dan kedua garis percabangan tidak akan pernah ada — commit fitur akan tampak seolah dikerjakan langsung di main. Materi lengkapnya ada di chapter Graph History
.
Menghapus Branch #
Branch sudah menunaikan tugasnya, dan label yang menggantung tanpa pekerjaan hanya menambah kebisingan:
git branch -d fitur/tambah-glosariumOutput yang Dihasilkan:
Deleted branch fitur/tambah-glosarium (was 68e553b).Opsi -d (huruf kecil) hanya menghapus branch yang pekerjaannya sudah sepenuhnya tergabung — Git menolak bila masih ada commit yang belum menyatu. Opsi -D memaksa penghapusan tanpa syarat itu dan hanya untuk keadaan yang benar-benar diniatkan; keduanya dibahas pada chapter Menghapus Branch
.
Latihan: Branch Fitur Sendiri #
Ulangi ritme yang sama dengan fitur pilihan sendiri. Misalnya, branch yang menambahkan kumpulan tips belajar:
git switch -c fitur/tambah-tips
cat > docs/tips-belajar.md <<'EOF'
# Tips Belajar
- Satu sesi belajar mencakup satu topik.
- Catat hal yang sempat salah; itu bahan latihan terbaik.
EOF
git add docs/tips-belajar.md
git commit -m "docs: tambahkan tips belajar"
git switch main
git merge --no-ff fitur/tambah-tips -m "Merge branch 'fitur/tambah-tips'"
git log --graph --oneline
git branch -d fitur/tambah-tipsKeluaran tiap langkah akan meniru keluaran bagian ini: branch baru dibuat, commit mendarat di branch, --no-ff melahirkan merge commit kedua, dan graf menampilkan percabangan baru di samping percabangan glosarium. Nama fitur bisa diganti sesuai minat — yang dilatih tetap ritmenya.
Ritme empat langkah itu kini menjadi milik kita. Bagian 4 menutup proyek dengan menandai hasil kumulatifnya sebagai versi pertama: update README.md, commit rilis, dan tag v1.0.0.