Pull request

Alur pull request, perbandingan alur fork dan branch, serta etika review yang sehat.

Daftar isi

Pull request adalah permintaan penggabungan sebuah branch yang dibungkus dengan ruang diskusi: diff pekerjaannya, ulasan pemeriksa, hasil pengujian otomatis, dan keputusan penggabungannya tercatat di satu tempat. Topik ini membahas mekanika alurnya, perbandingan alur branch dengan alur fork, dan etika review yang membuat permintaan itu ditanggapi dengan baik. Perintah Git menyiapkan bahan permintaannya, sedangkan keputusan penggabungan terjadi pada platform hosting.

Yang dibawa sebuah pull request#

Sebuah pull request membawa dua hal yang sudah dikenal, yaitu branch sumber dan branch tujuan, ditambah satu hal baru yang menjadi nilai utamanya, yaitu riwayat diskusi. Platform menampilkan seluruh perbedaan kedua branch, dan setiap baris dapat dikomentari, disarankan perbaikannya, atau disetujui. Pengujian otomatis berjalan pada setiap pembaruan permintaan, dan hasilnya tampil sebagai status yang dapat dijadikan syarat penggabungan.

Nilai yang paling sering diremehkan adalah catatannya. Permintaan yang digabung menyimpan konteks keputusan: mengapa perubahan itu dibuat, apa yang dipertimbangkan lalu ditolak, dan siapa yang menyetujuinya. Catatan tersebut menjawab pertanyaan yang biasanya muncul berbulan-bulan kemudian. Karena itulah banyak tim menetapkan bahwa perubahan pada branch utama harus melalui pull request, meskipun penulisnya sendiri yang menggabungkan.

Alur satu pull request dari branch hingga penggabunganBranch fiturcommit lokalgit pushbranch ke remotePull request dibukadi platformReview dan CIkomentar + pengujianMerge ke mainbranch dihapus
Alur satu pull request dari branch hingga penggabungan

Alur branch dan alur fork#

Dua alur mengantar commit menuju pull request, dan pilihannya ditentukan hak akses. Alur branch dipakai oleh anggota tim yang memiliki hak menulis: branch pekerjaan dikirim langsung ke repository proyek, dan pull request dibuka dari branch tersebut. Alur fork dipakai oleh kontributor luar: salinan pribadi dibuat pada akunnya, pekerjaan dikirim ke salinan itu, dan pull request dibuka dari fork menuju repository asal.

AspekAlur branchAlur fork
Tempat branch pekerjaanrepository proyekfork milik kontributor
Hak yang diperlukanhak menulis repositorytidak diperlukan
Remote yang dikelolaorigin sajaorigin dan upstream
Umumnya dipakai untukpekerjaan tim hariankontribusi terbuka

Kedua alur bertemu pada titik yang sama, yaitu pull request antara dua branch, dan seluruh mekanika reviewnya identik. Alur latihan pada jalur ini memakai alur branch karena repository pusat lokal dapat ditulis.

Menyiapkan pull request dari sisi Git#

Bagian yang dijalankan Git adalah menyiapkan branch yang layak ditinjau dan mengirimnya. Siapkan repository pusat dengan branch utama, lalu kerjakan branch fitur dan kirim.

bash
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"
bash
rm -rf /tmp/lab-pusat.git /tmp/lab-pr
git init --bare /tmp/lab-pusat.git
git init -b main /tmp/lab-pr
cd /tmp/lab-pr
git config user.name "Budi"
git config user.email "[email protected]"
printf "Panduan proyek.\n" > panduan.md
git add panduan.md
git commit -m "Panduan proyek"
git remote add origin /tmp/lab-pusat.git
git push -q -u origin main
git switch -c feature/ringkasan
printf "Panduan proyek.\nRingkasan proyek.\n" > panduan.md
git commit -am "Tambah ringkasan proyek"
git push -q -u origin feature/ringkasan
git ls-remote --heads origin
text Keluaran
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
Initialized empty Git repository in /tmp/lab-pusat.git/
Initialized empty Git repository in /tmp/lab-pr/.git/
[main (root-commit) f4ac75f] Panduan proyek
 1 file changed, 1 insertion(+)
 create mode 100644 panduan.md
Switched to a new branch 'feature/ringkasan'
[feature/ringkasan 0f1527c] Tambah ringkasan proyek
 1 file changed, 1 insertion(+)
0f1527c2d50e200df0eec91fd1a1b72be2c22dff	refs/heads/feature/ringkasan
f4ac75fd34ad41ecf8c2f9baac310487fec36730	refs/heads/main

Kedua branch kini ada di remote, dan bahan pull request sudah lengkap. Pembukaannya dilakukan pada antarmuka platform atau melalui perangkat baris perintah milik platform.

bash
# tidak-dijalankan
# pembukaan pull request memerlukan akun dan akses ke layanan hosting
gh pr create --base main --head feature/ringkasan \
  --title "Tambah ringkasan proyek" --body "Melengkapi panduan dengan ringkasan."

Setelah permintaan dibuka, pembaruan berikutnya cukup dikirim ke branch yang sama, dan permintaannya menampilkan commit terbaru secara otomatis. Branch dihapus pada kedua sisi setelah penggabungan, dan kebiasaan ini menjaga daftar branch tetap berisi pekerjaan yang hidup.

Etika review pada kedua sisi#

Etika penulis dimulai sebelum membuka permintaan: deskripsi yang menjelaskan maksud, langkah pengujiannya, dan batas yang sengaja tidak disertakan. Pembaruan setelah tinjauan dikerjakan dengan commit baru atau rebase yang jelas, dan keputusan yang berbeda pendapat dinyatakan dengan alasannya di tempat diskusi, bukan diam-diam diubah.

Etika pemeriksa berangkat dari prinsip bahwa yang ditinjau adalah kode, bukan orangnya. Komentar menyatakan apa yang terlihat dan mengapa itu penting, menyertakan saran yang konkret apabila ada, dan membedakan antara catatan yang menghalangi penggabungan dan catatan selera. Waktu tanggapan yang bisa diandalkan adalah bentuk kehormatan yang paling bernilai pada alur ini, karena permintaan yang tertunda lama menumpuk konfliknya.

Ringkasan#

  • Pull request membawa diff dua branch, ruang diskusi, dan status pengujian, serta menyimpan konteks keputusan setelah digabungkan.
  • Alur branch dipakai anggota tim dengan hak menulis, sedangkan alur fork menyediakan jalur kontribusi tanpa hak menulis.
  • Sisi Git tuntas pada branch yang dikirim, dan pembukaan permintaan terjadi pada platform hosting.
  • Etika kedua sisi berpusat pada deskripsi yang jelas, komentar berisi saran konkret, dan waktu tanggapan yang bisa diandalkan.

Referensi#