Menerbitkan rilis berarti menutup semua celah sekaligus: seluruh commit harus sampai ke pusat, artefak yang dibagikan pengguna harus dibungkus dari keadaan yang tepat, catatan rilis harus terbaca tanpa membuka terminal, dan hasil akhirnya harus terbukti utuh dari luar. Bagian ini menuntaskan keempatnya — lalu menutup course dengan ringkasan tujuh proyek yang barusan kita jalani.
Mendorong Rilis ke Pusat #
Dua langkah terakhir dari pusat: commit changelog yang belum terkirim, dan penegasan bahwa tag di pusat sudah benar:
git push origin main
git push origin v1.0.0Output yang Dihasilkan (perintah git push origin main):
To ../katalog-film-pusat.git
37b21f8..4d9fc68 main -> mainOutput yang Dihasilkan (perintah git push origin v1.0.0):
Everything up-to-datePush main mengirim rentang 37b21f8..4d9fc68 — commit changelog menyusul riwayat yang sudah ada di pusat. Push tag menjawab Everything up-to-date: tag sudah diperbarui oleh push terpaksa di Bagian 3, dan kini salinan pusat identik dengan lokal. Peta akhir pusat terbaca dari luar lewat ls-remote:
git ls-remote originOutput yang Dihasilkan:
4d9fc687a8e5f21807bfd3d06ee6b01aba8ebfae HEAD
4d9fc687a8e5f21807bfd3d06ee6b01aba8ebfae refs/heads/main
8c4b52ab4123c9eafcd925613b070327e3e3dd9b refs/tags/v1.0.0
4d9fc687a8e5f21807bfd3d06ee6b01aba8ebfae refs/tags/v1.0.0^{}Empat baris itu adalah seluruh isi pusat: HEAD menunjuk main, refs/heads/main berdiri di commit changelog, refs/tags/v1.0.0 adalah objek tag itu sendiri, dan baris ^{} terakhir adalah hasil pengupasan Git — commit yang ditunjuk tag. Rilis lengkap di pusat.
Membungkus Artefak dari Tag #
Pengguna rilis tidak selalu ingin meng-clone repository berikut seluruh riwayatnya — sebagian hanya butuh isi proyek pada versi tertentu. Untuk itu ada git archive: perintah yang mengekspor isi pohon pada satu titik riwayat menjadi berkas terkompresi, tanpa direktori .git sama sekali:
git archive --format=tar.gz --output=katalog-film-1.0.0.tar.gz v1.0.0
ls -lh katalog-film-1.0.0.tar.gz
tar -tzf katalog-film-1.0.0.tar.gzOutput yang Dihasilkan (perintah ls -lh katalog-film-1.0.0.tar.gz):
-rw-rw-r-- 1 z z 937 Oct 13 10:40 katalog-film-1.0.0.tar.gzOutput yang Dihasilkan (perintah tar -tzf katalog-film-1.0.0.tar.gz):
CHANGELOG.md
README.md
VERSION
src/
src/app.txtMari bedah tiga argumennya: --format=tar.gz memilih format terkompresi, --output menentukan nama berkas hasil, dan v1.0.0 adalah titik riwayat yang diekspor — pohon persis seperti yang dibekukan tag, lengkap dengan CHANGELOG.md hasil tag ulang Bagian 3. Daftar isi dari tar -tzf membuktikannya: empat berkas proyek tampil, .git tidak ada, dan ukurannya cuma 937 byte untuk proyek sekecil ini. Sintaks lengkapnya terdokumentasi di dokumentasi git archive
.
Menyusun Catatan Rilis #
Catatan rilis (release notes) adalah teks yang menyambut pengguna di halaman rilis. Bahan utamanya sudah kita tulis dua kali: pesan tag menjadi judul dan ringkasan, changelog menjadi rincian perubahan. Keduanya bisa dibaca kembali tanpa membuka editor:
git tag -l -n10 v1.0.0Output yang Dihasilkan:
v1.0.0 Katalog Film 1.0.0
Fitur: daftar film, pencarian. Perbaikan: judul.Opsi -n10 meminta git tag -l mencetak pesan tag sampai sepuluh baris — di sini terlihat dua paragraf pesan rilis dari Bagian 2. Pada platform hosting, teks ini tinggal ditempelkan: fitur Releases di GitHub dan GitLab menggabungkan tag, catatan rilis, dan artefak dalam satu halaman publik — pengguna mengunduh katalog-film-1.0.0.tar.gz dari sana tanpa menyentuh terminal. Alur lengkapnya dibedah di Release dan Tags
.
Verifikasi Ujung ke Ujung #
Satu ujian terakhir menutup rilis: anggap kita adalah pengguna yang baru datang, lalu hidupkan repository dari pusat ke folder bersih:
git clone ../katalog-film-pusat.git verifikasi
git -C verifikasi describe --tagsOutput yang Dihasilkan (perintah git clone ../katalog-film-pusat.git verifikasi):
Cloning into 'verifikasi'...
done.Output yang Dihasilkan (perintah git -C verifikasi describe --tags):
v1.0.0git describe --tags menjawab pertanyaan “commit ini paling dekat dengan tag mana”: Git mencari tag terdekat yang bisa dicapai dari HEAD, lalu melaporkan namanya. Keluaran v1.0.0 polos — tanpa akhiran — berarti HEAD clone jatuh tepat pada tag; bila HEAD berada beberapa commit setelahnya, keluarannya berbentuk v1.0.0-3-g<hash>. Perintah ini favorit skrip rilis, dan penamaan versi otomatis darinya dibahas di dokumentasi git describe
. Riwayatnya ikut utuh:
git -C verifikasi log --oneline -3Output yang Dihasilkan:
4d9fc68 docs: tambah CHANGELOG untuk 1.0.0
37b21f8 chore: kunci versi 1.0.0
028e7df fix: perbaiki typo judul filmDelapan commit, tag, changelog, artefak — semuanya terbukti sampai. Isi aplikasi yang terkirim layak dilihat sekali lagi:
cat src/app.txtOutput yang Dihasilkan:
Katalog Film
============
Catatan film favorit untuk ditonton akhir pekan.
## Daftar Film
1. Laskar Pelangi (2008)
2. Dilan 1990 (2018)
3. Habibie & Ainun (2012)
## Pencarian
cari(kata_kunci):
cocok = judul yang memuat kata_kunci
kembalikan cocok
Hasil uji:
cari("dilan") → Dilan 1990 (2018)Header, daftar film dengan judul yang sudah diperbaiki, dan seksi pencarian — persis keadaan yang dibekukan v1.0.0, dan persis isi src/app.txt yang menyertai halaman proyek ini. Rilis v1.0.0 selesai.
Ringkasan Tujuh Proyek #
Dengan rilis ini, course menutup babak latihannya. Tujuh proyek yang kita jalani membentuk satu progression utuh:
| Proyek | Konsep utama yang dilatih |
|---|---|
| Proyek 01: Repository Pribadi | init, commit rutin, branch, merge, dan tag pertama |
| Proyek 02: Workflow Feature Branch | satu branch per fitur, merge terjadwal, riwayat rapi |
| Proyek 03: Kolaborasi Melalui Remote | remote bare, push/pull bergiliran, konflik diselesaikan |
| Proyek 04: Simulasi Code Review | fork, review bertahap, perbaikan atas feedback, merge |
| Proyek 05: Pemulihan Riwayat | reflog, reset, branch bangkit, mirror dan bundle |
| Proyek 06: Otomasi Git Hooks | validasi pesan commit dan pemeriksaan otomatis |
| Proyek 07: Simulasi Release | SemVer, annotated tag, changelog, artefak, verifikasi rilis |
Dari baris pertama sampai terakhir polanya konsisten: setiap proyek memakai konsep proyek sebelumnya dan menambah satu kompetensi baru — repository pribadi tumbuh menjadi workflow, workflow bertemu orang lain, hasil kerja direview, kehilangan dipulihkan, kualitas dijaga otomatis, dan semuanya dikemas menjadi rilis bernomor.
Apa Setelah Ini #
Perjalanan course selesai, tapi Git lebih luas dari tujuh proyek ini. Tiga tempat lanjutan terdekat: Referensi
untuk contekan perintah, Lampiran
untuk menyiapkan SSH, GPG, dan platform, serta Sumber Belajar Lanjutan
untuk bacaan berikutnya. git describe dan git archive yang barusan terpakai belum punya chapter teorinya sendiri — sama seperti git bisect, git rerere, dan git bundle tingkat lanjut — sehingga kelimanya kandidat pendalaman yang pas setelah latihan ini.
Rilis pertama selalu yang paling berarti: kita kini tahu persis apa yang terjadi di balik nama v1.0.0 — fitur mana yang masuk, mengapa angkanya begitu, di commit mana ia dibekukan, bagaimana catatannya disusun, dan bagaimana pembuktiannya bekerja. Rilis kedua tinggal mengulang pola dengan isi baru, dan setiap rilis berikutnya akan terasa seperti ritual yang sudah dikenal.