- Bab 6 dari 8
- 30 menit
- 4 soal kuis
Fork, Issues, Projects, dan GitHub Flow
Di bab ini (8 bagian)
Tujuan bab ini
- Berkontribusi ke repo orang lain lewat fork, lalu menjaga fork tetap sinkron dengan upstream.
- Melacak pekerjaan dengan Issues, label, milestone, assignee, dan template issue.
- Mengatur pekerjaan tim di GitHub Projects memakai view board dan table serta field kustom.
- Menjalankan GitHub Flow dari branch sampai merge.
Fork dan kontribusi open source
Kamu tidak punya akses tulis ke repo orang lain, jadi tidak bisa langsung push ke sana. Solusinya fork: salinan repo di akun GitHub-mu sendiri. Beda fork dan clone itu penting: fork membuat salinan di GitHub, clone membuat salinan di laptop.
Alurnya:
- Buka repo asli, klik Fork di kanan atas, lalu Create fork. Opsi Copy the main branch only biasanya sudah dicentang, dan itu cukup.
- Clone fork-mu (bukan repo asli) ke laptop.
- Buat branch baru, commit perubahanmu.
- Push ke fork-mu.
- Di halaman fork, klik Contribute → Open pull request. Base-nya repo asli, compare-nya branch di fork-mu.
Saat membuat PR dari fork, biarkan Allow edits by maintainers tercentang supaya maintainer bisa merapikan sedikit tanpa harus menunggu kamu.
Di laptop, kamu akan punya dua remote. origin menunjuk fork-mu, dan repo asli biasanya diberi nama upstream:
Menyinkronkan fork. Repo asli terus bergerak, sementara fork-mu tidak ikut berubah dengan sendirinya. Ada dua cara mengejarnya:
- Di GitHub: di halaman fork, klik Sync fork lalu Update branch.
- Di laptop:
Lakukan sinkron sebelum membuat branch baru supaya PR-mu berangkat dari kode terbaru.
Etika kontribusi: baca CONTRIBUTING.md dan Code of Conduct dulu, cari issue berlabel good first issue, diskusikan di issue sebelum menulis perubahan besar, dan buat satu PR untuk satu perubahan logis.
Issues: daftar pekerjaan yang bisa didiskusikan
Issue adalah unit pekerjaan terkecil di GitHub: laporan bug, ide fitur, atau pertanyaan. Buka tab Issues → New issue, isi judul dan deskripsi. Setiap issue dapat nomor, misalnya #12, yang bisa kamu sebut di commit, komentar, atau PR. Seperti di bab sebelumnya, Closes #12 di deskripsi PR menutup issue itu otomatis saat PR di-merge ke branch default.
Di sidebar kanan issue ada beberapa alat pengelompokan:
| Alat | Fungsi |
|---|---|
| Assignees | siapa penanggung jawabnya |
| Labels | jenis atau area kerja, misalnya bug, enhancement, documentation |
| Milestone | target rilis dengan tenggat, misalnya "v1.0" |
| Projects | menambahkan issue ke papan kerja |
Repo baru otomatis punya label bawaan seperti bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, dan wontfix. Kamu bisa menambah label sendiri, misalnya prioritas: tinggi. Milestone dibuat dari halaman Issues lewat Milestones → New milestone, lengkap dengan judul, tanggal jatuh tempo, dan deskripsi. GitHub lalu menampilkan progres: berapa persen issue di milestone itu yang sudah ditutup.
Template issue memastikan laporan bug selalu lengkap. Simpan file Markdown di folder .github/ISSUE_TEMPLATE/ di branch default:
Saat seseorang klik New issue, template ini muncul sebagai pilihan, dan label bug langsung terpasang.
GitHub Projects
GitHub Projects adalah papan kerja yang tersambung langsung dengan issue dan PR. Buat dari tab Projects di profil atau organisasi, lalu tautkan ke repo. Satu project bisa berisi item dari beberapa repo.
Data yang sama bisa dilihat lewat beberapa view:
- Board: papan kanban dengan kolom berdasarkan field
Status(bawaannya Todo, In Progress, Done). Tambah kolom seperti "In Review" kalau perlu. - Table: seperti spreadsheet. Enak untuk sortir, filter, dan group by.
- Roadmap: lini masa berdasarkan field tanggal atau iteration.
Field adalah kolom data tambahan per item. Selain field bawaan (Assignees, Labels, Milestone, Status), kamu bisa menambah field kustom bertipe text, number, date, single select, atau iteration. Contohnya Prioritas (single select: Tinggi, Sedang, Rendah), Estimasi (number), dan Sprint (iteration dua minggu).
Tambahkan item dengan mengetik # di baris paling bawah lalu pilih issue atau PR. Bisa juga menulis draft issue yang nanti dikonversi menjadi issue sungguhan. Projects juga punya workflows bawaan: saat issue ditutup atau PR di-merge, status item otomatis menjadi Done. Untuk tim kecil, ini sudah menggantikan aplikasi manajemen tugas terpisah.
GitHub Flow langkah demi langkah
GitHub Flow adalah alur kerja ringan dengan satu branch permanen: main, yang selalu siap dirilis.
- Buat branch dari
maindengan nama yang jelas, misalnyafeature/mode-gelap. - Buat perubahan: commit kecil dengan pesan bermakna, push sesering mungkin.
- Buka pull request, tautkan issue dengan
Closes #34, dan minta review. Draft PR boleh dibuka sejak awal. - Tanggapi review: diskusi, perbaiki, lalu push lagi ke branch yang sama. Pemeriksaan otomatis (CI) berjalan di sini.
- Merge setelah disetujui dan semua pemeriksaan lolos, lalu deploy.
- Hapus branch yang sudah di-merge.
Bandingkan dengan Git Flow, yang punya branch main, develop, release, dan hotfix. Git Flow cocok untuk produk dengan rilis terjadwal, tapi lebih rumit. Untuk tugas kuliah dan proyek kecil, GitHub Flow sudah lebih dari cukup.
Kesalahan umum
- Clone repo asli, bukan fork. Push-mu akan ditolak karena tidak punya akses. Ganti remote dengan
git remote set-url origin <url-fork>, lalu pasang repo asli sebagaiupstream. - Bekerja langsung di
mainmilik fork. Sinkron jadi berantakan. Selalu buat branch baru. - Fork tidak pernah disinkronkan, sehingga PR penuh konflik dengan kode terbaru.
- Issue tanpa konteks seperti "tidak jalan". Pakai template supaya langkah reproduksinya jelas.
- Template disimpan di folder yang salah atau bukan di branch default, sehingga tidak muncul di New issue.
Coba sendiri
Simulasikan repo asli dan fork dengan repo bare di laptop. Hash akan berbeda.
Sekarang pemilik repo asli menambah commit:
Sinkronkan fork-mu:
Lanjutkan di GitHub sungguhan: fork satu repo latihan, buat issue dengan label, tambahkan ke Project, lalu jalankan GitHub Flow sampai PR di-merge.
Rangkuman
- Fork adalah salinan di akun GitHub-mu.
originmenunjuk fork,upstreammenunjuk repo asli. - Sinkronkan fork dengan Sync fork atau
git fetch upstreamlalugit merge upstream/main. - Issues dikelompokkan dengan label, milestone, dan assignee, sementara template di
.github/ISSUE_TEMPLATE/membuat laporan seragam. - GitHub Projects menampilkan issue dan PR sebagai board, table, atau roadmap, dengan field kustom dan status otomatis.
- GitHub Flow: branch, commit, pull request, review dan CI, merge, hapus branch.
Slide 28 sampai 31 dari deck GitHub. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Kuis (4 soal)
Cek pemahaman
1Berdasarkan output `git remote -v` di fork berikut, perintah mana yang mengambil commit terbaru dari repo asli?
$ git remote -v origin https://github.com/rina-dev/kamus.git (fetch) origin https://github.com/rina-dev/kamus.git (push) upstream https://github.com/budi/kamus.git (fetch) upstream https://github.com/budi/kamus.git (push)2Label bawaan mana yang dipakai untuk menandai issue yang ramah bagi kontributor pemula?
3GitHub Flow memakai branch permanen develop dan release selain main.
4View GitHub Projects mana yang menampilkan item sebagai kolom kanban berdasarkan field Status?