gitgithubopen sourceMenengah5 mnt baca

Fork, Kontribusi OSS & GitHub Pages

Alur fork untuk kontribusi open source, sinkronisasi upstream, dan deploy GitHub Pages.

Kenapa harus fork? Kan tinggal clone?

Kamu menemukan repo open source yang keren dan ingin memperbaiki typo di dokumentasinya. Kamu clone, edit, lalu push... DITOLAK. Wajar: kamu bukan maintainer, kamu tidak punya akses push ke repo orang lain. GitHub tidak akan membiarkan orang asing menulis langsung ke repo pemiliknya.

Solusinya adalah fork: GitHub membuat salinan lengkap repo itu di akunmu. Klik tombol "Fork", tunggu beberapa detik, selesai. Sekarang kamu punya github.com/kamu/repo yang bisa kamu push seenaknya tanpa mengganggu repo asli. Fork adalah fondasi jutaan kontribusi open source harian.

Contoh 1: menyiapkan fork dan remote upstream

Clone fork milikmu (bukan repo asli!), lalu daftarkan repo asli sebagai remote bernama upstream:

bash
git clone https://github.com/kamu/repo.git
cd repo
git remote add upstream https://github.com/asli/repo.git
git remote -v
origin https://github.com/kamu/repo.git (fetch) origin https://github.com/kamu/repo.git (push) upstream https://github.com/asli/repo.git (fetch) upstream https://github.com/asli/repo.git (push)

Dua remote dengan peran jelas: origin itu fork milikmu (tempat push), upstream itu repo asli (tempat ambil update). Kerjakan di branch baru, JANGAN di main:

bash
git switch -c fix-typo-readme
# ... edit, commit ...
git push -u origin fix-typo-readme

Lalu buka GitHub dan buat PR dari branch fork-mu ke repo asli. Alur ini dipakai dari typo satu baris sampai fitur raksasa.

Contoh 2: sinkronisasi fork dengan repo asli

Repo asli terus berkembang sementara kamu kerja. Sebelum mulai kerja baru (atau sebelum buka PR), tarik update terbarunya supaya tidak konflik:

bash
git switch main
git fetch upstream
git merge upstream/main
git push origin main
From https://github.com/asli/repo a1b2c3d..e4f5a6b main -> upstream/main Updating a1b2c3d..e4f5a6b Fast-forward README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) To https://github.com/kamu/repo.git a1b2c3d..e4f5a6b main -> main

Main di fork-mu sekarang sama persis dengan repo asli. Kalau kamu pakai GitHub CLI, ada jalan pintas: gh repo sync. Tanpa sinkronisasi rutin, PR-mu berisiko konflik dengan perubahan terbaru dan maintainer jadi malas me-review.

GitHub Pages: hosting web gratis

Punya web statis (HTML/CSS/JS)? GitHub bisa meng-host-nya gratis lewat GitHub Pages. Caranya:

  1. Push repo yang berisi index.html ke GitHub.
  2. Buka Settings > Pages > Source: pilih branch main, folder / (root).
  3. Tunggu 1-2 menit, web-mu live di https://kamu.github.io/repo/.

Cocok untuk portofolio, dokumentasi proyek, dan demo tugas sekolah. Setiap push baru ke branch itu otomatis deploy ulang, jadi web-mu selalu sinkron dengan kode. Untuk custom domain, tambahkan file CNAME berisi domainmu dan atur DNS-nya.

Catatan teknis: etika kontribusi open source: baca CONTRIBUTING.md dulu sebelum ngoding, mulai dari issue berlabel "good first issue", jangan buka PR raksasa tanpa diskusi dulu dengan maintainer, dan bersabar menunggu review (mereka relawan, bukan karyawanmu). Satu PR kecil yang di-merge jauh lebih berharga dari lima PR besar yang diabaikan.

Kapan memakai alur ini?

Setiap kali ingin berkontribusi ke repo yang bukan milikmu: memperbaiki typo dokumentasi, menambah fitur, atau melaporkan bug lewat PR. Fork juga berguna untuk "menyimpan" versi repo sebelum bereksperimen liar, tanpa takut merusak apa pun.

Kesalahan umum pemula

SALAH: clone repo asli, lalu bingung kenapa push ditolak.

bash
git clone https://github.com/asli/repo.git
# ... edit ...
git push
ERROR: Permission to asli/repo.git denied to kamu. fatal: Could not read from remote repository.

Ini bukan bug, ini memang aturannya. Kamu tidak punya akses tulis ke repo orang lain.

BENAR: fork dulu, clone fork-mu, push ke origin.

bash
# 1. Klik Fork di GitHub, lalu:
git clone https://github.com/kamu/repo.git
git remote add upstream https://github.com/asli/repo.git

Kesalahan kedua: tidak pernah sinkron dengan upstream. Fork-mu makin lama makin ketinggalan, PR-mu konflik di mana-mana. Biasakan sync sebelum mulai kerja: git switch main && git fetch upstream && git merge upstream/main && git push origin main.

Tantangan

Fork dan PR pertamamu ke OSS

Cari repo kecil berlabel 'good first issue' (atau pakai repo latihan teman). Fork, clone fork-mu, tambah upstream remote, buat branch, lakukan 1 perbaikan kecil, push, dan buka PR. Tuliskan link PR-nya.

Tugas

Tugas: Portofolio live via GitHub Pages

Buat repo portofolio-pertama berisi halaman HTML biodata sederhana (nama, tentang, kontak). Commit dengan pesan yang baik, push ke GitHub, aktifkan GitHub Pages, lalu buka 1 Pull Request berisi 1 perbaikan (mis. tambah foto atau perbaiki teks). Kirimkan: link repo, link Pages yang live, dan link PR.

Kriteria penilaian:

  • Repo berisi index.html valid yang tampil benar di Pages
  • Minimal 2 commit dengan pesan imperatif yang jelas
  • GitHub Pages aktif dan bisa diakses
  • 1 PR dibuka dengan deskripsi yang menjelaskan perubahan

AI tutor akan memeriksa bug, kesalahan syntax, dan memberi saran perbaikan.

Kuis Bab

Uji pemahamanmu: GitHub & Kolaborasi

Jawab 5 soal berikut, lalu tekan "Periksa Jawaban".

1.Kapan git reflog menjadi penyelamat?

2.Kenapa 'git push' tidak mengirim tag secara default?

3.Isi deskripsi Pull Request yang baik mencakup...

4.Kapan 'Squash and merge' menjadi pilihan terbaik?

5.Alur kontribusi ke repo open source milik orang lain yang benar adalah...