Proyek Akhir Bagian 2: Review, Hotfix, Release & Ujian Akhir
Tujuan Pembelajaran
- Mampu melakukan simulasi hotfix workflow
- Mampu membuat release dan tag di GitHub
- Mendemonstrasikan penguasaan seluruh materi Git & GitHub
Review Proyek Bagian 1
Pastikan dari pertemuan 31, kamu sudah menyelesaikan:
- Repository dengan README, .gitignore, dan struktur rapi
- Feature development menggunakan GitHub Flow (about page, projects page)
- Pre-commit hook untuk code quality
- CI/CD pipeline dengan GitHub Actions
- Push ke GitHub dengan tag v1.0.0
Tahap 6: Simulasi Hotfix (10 menit)
Skenario: Bug ditemukan di production! Halaman utama tidak memiliki navigasi yang lengkap. Kita perlu membuat hotfix segera.
# Pastikan di branch main dan up-to-date
git switch main
git pull origin main
# Buat branch hotfix
git switch -c hotfix/fix-navigation
# Perbaiki index.html: tambah navigasi yang hilang
# Edit index.html untuk menambahkan link navigasi yang lebih lengkap
cat > index.html << 'EOF'
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portfolio</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>Portfolio Saya</h1>
<nav>
<a href="index.html">Home</a>
<a href="about.html">About</a>
<a href="projects.html">Projects</a>
</nav>
</header>
<main>
<p>Selamat datang di portfolio saya.</p>
<p>Gunakan navigasi di atas untuk menjelajahi website ini.</p>
</main>
<footer>
<p>Copyright 2024 - Dibuat sebagai proyek akhir Git & GitHub</p>
</footer>
</body>
</html>
EOF
git add . && git commit -m "fix: tambah navigasi dan footer yang hilang di halaman utama"
# Merge hotfix ke main
git switch main
git merge hotfix/fix-navigation
git branch -d hotfix/fix-navigation
# Tag patch release
git tag -a v1.0.1 -m "Hotfix v1.0.1: Perbaiki navigasi dan tambah footer"
# Push ke remote
git push origin main --tags
Poin penting hotfix workflow:
- Hotfix selalu dibranch dari
main(bukan develop atau feature) - Penamaan:
hotfix/deskripsi-singkat - Merge kembali ke
maindan juga kedevelop(jika menggunakan Git Flow) - Buat patch tag (v1.0.x) untuk setiap hotfix
Tahap 7: Release v1.1.0 (5 menit)
Setelah hotfix, buat release resmi di GitHub.
# Buat release di GitHub (via browser):
# 1. Buka repository di GitHub
# 2. Klik tab "Releases" di sidebar kanan
# 3. Klik "Create a new release"
# 4. Pilih tag: v1.0.1 (atau buat tag baru)
# 5. Release title: "v1.0.1 - Hotfix Navigasi"
# 6. Description / changelog:
#
# ## Changelog
#
# ### Bug Fixes
# - Perbaiki navigasi yang hilang di halaman utama
# - Tambah footer di semua halaman
#
# ### Full Changelog
# v1.0.0...v1.0.1
#
# 7. Klik "Publish release"
# Atau menggunakan GitHub CLI:
# gh release create v1.0.1 \
# --title "v1.0.1 - Hotfix Navigasi" \
# --notes "## Bug Fixes
# - Perbaiki navigasi yang hilang di halaman utama
# - Tambah footer di semua halaman"
Verifikasi akhir project:
# Cek semua tag
git tag -l
# Cek history lengkap
git log --oneline --graph --all --decorate
# Cek status bersih
git status
# Seharusnya: nothing to commit, working tree clean
# Cek remote up-to-date
git push origin main --tags
Ringkasan Proyek Akhir
Dalam proyek ini kamu telah mempraktikkan:
| Skill | Diterapkan di |
|---|---|
| git init, add, commit | Tahap 1: Setup |
| Feature branching (GitHub Flow) | Tahap 2: Feature Dev |
| git merge, branch -d | Tahap 2: Merge features |
| git tag | Tahap 2: v1.0.0, Tahap 6: v1.0.1 |
| Git hooks (pre-commit) | Tahap 3: Code quality |
| GitHub Actions CI/CD | Tahap 4: Automation |
| git remote, push | Tahap 5: Push to GitHub |
| Pull Request | Tahap 5: PR workflow |
| Hotfix branch | Tahap 6: Emergency fix |
| GitHub Releases | Tahap 7: Release management |
| .gitignore, README | Sepanjang project |
| Conventional Commits | Semua pesan commit |
Ujian Akhir (25 soal, 25 menit)
Ujian akhir mencakup seluruh materi dari pertemuan 1-30. Pastikan kamu memahami konsep dasar hingga advanced sebelum mengerjakan.
Cakupan ujian:
- Basic (Pertemuan 1-11): Version control, 3 area kerja, commit, branching, remote, GitHub, Fork, PR
- Intermediate (Pertemuan 12-22): Branch management, merge strategies, stash, tag, PR review, GitHub Actions dasar
- Advanced (Pertemuan 23-30): Rebase, reflog, reset, revert, bisect, cherry-pick, hooks, CI/CD, internals, security
Format: 25 soal pilihan ganda, passing grade 70% (minimal 18 benar dari 25 soal).
Tips mengerjakan ujian:
- Baca setiap soal dengan teliti
- Perhatikan kata kunci: βPALINGβ, βPERTAMAβ, βTIDAKβ
- Jika ragu, eliminasi jawaban yang jelas salah
- Manajemen waktu: rata-rata 1 menit per soal
Penutupan Course
Selamat! Kamu telah menyelesaikan seluruh 32 pertemuan course Git dan GitHub.
Ringkasan apa yang sudah dipelajari:
- Basic (Pertemuan 1-11): Version control, Git workflow, GitHub, remote repository, kolaborasi dasar, Fork, Pull Request, Markdown, README, GitHub Pages
- Intermediate (Pertemuan 12-22): Branch management, merge vs rebase, merge conflicts, stash, tag, semantic versioning, Pull Request review, GitHub Actions dasar, kolaborasi tim
- Advanced (Pertemuan 23-30): Interactive rebase, reflog, reset, revert, bisect, cherry-pick, Git hooks, Husky, CI/CD pipeline, submodules, worktrees, LFS, Git internals, security best practices
- Capstone (Pertemuan 31-32): End-to-end open source workflow, proyek portfolio lengkap
Langkah selanjutnya untuk terus berkembang:
- Kontribusi ke open source β cari project dengan label
good first issuedi GitHub - Terapkan di kehidupan nyata β gunakan Git di project kerja, kuliah, atau personal
- Pelajari lebih lanjut: monorepo management, advanced GitHub Actions, GitHub CLI (
gh), Git hooks automation - Referensi lanjutan: Pro Git Book β gratis dan lengkap
Tugas Mandiri (Akhir)
- Pastikan proyek akhir sudah lengkap di GitHub dengan semua tahap (1-7) selesai
- Verifikasi: CI pipeline berjalan, tag dan release ada, PR dibuat
- Tulis refleksi singkat di README: apa yang paling kamu pelajari dari course ini
- Bagikan link repository proyek akhir kamu
Quiz: Ujian Akhir
Jawab 25 pertanyaan berikut untuk menguji pemahaman kamu.
Perintah untuk melihat semua branch baik lokal maupun remote adalah...