Git Clone vs Git Fork: Apa Bedanya?

pindipin
09 September 2026
11 min read
Git Clone vs Git Fork: Apa Bedanya?

Kamu sudah sering pakai git clone untuk mendownload repository dari GitHub. Tapi ketika lihat tombol Fork di halaman repo orang lain, muncul pertanyaan: bedanya apa? Bukankah keduanya sama-sama membuat salinan repository?

Ternyata tidak. Dan perbedaannya cukup fundamental — bukan sekadar soal tombol vs command.

Banyak developer pemula (dan bahkan yang sudah cukup lama pakai Git) masih menganggap fork dan clone itu operasi yang sama. Padahal keduanya bekerja di level yang berbeda: clone berjalan di komputer lokal kamu, sedangkan fork berjalan di server GitHub. Memahami perbedaan ini penting — terutama kalau kamu mulai ingin berkontribusi ke proyek open source seperti Laravel. Artikel ini menjelaskan keduanya secara praktis, lengkap dengan workflow yang bisa langsung kamu pakai.


Apa Itu git clone?

git clone adalah perintah Git standar yang menduplikasi seluruh repository ke mesin lokal kamu. Bukan hanya file-file terakhir — clone menyalin semua data: setiap commit, branch, tag, dan file yang pernah ada di repository tersebut.

Menurut dokumentasi resmi Git, clone "clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository, and creates and checks out an initial branch." Dengan kata lain, setelah clone selesai, kamu punya copy lengkap dari repository di komputer kamu — siap dibaca, dimodifikasi, atau dijalankan.

Satu hal otomatis yang terjadi setelah clone: Git membuat remote bernama origin yang menunjuk ke repo sumber. Ini yang memungkinkan kamu push atau pull ke/dari repo asli nantinya.

Contoh dasar

Misalnya kamu ingin belajar source code Laravel Framework secara langsung di lokal:

git clone https://github.com/laravel/laravel.git
cd laravel
composer install

Tanpa perlu akun GitHub, tanpa perlu login — repository publik bisa di-clone secara bebas. Ini salah satu kekuatan ekosistem open source.

Clone lewat SSH vs HTTPS

GitHub menyediakan dua jenis URL untuk clone. Kalau sudah setup SSH key, kamu bisa pakai SSH:

git clone git@github.com:laravel/laravel.git

Atau pakai HTTPS (tidak perlu SSH key):

git clone https://github.com/laravel/laravel.git

Perbedaannya di autentikasi. SSH menggunakan key pair yang sudah didaftarkan di akun GitHub, sedangkan HTTPS akan meminta credentials (username + Personal Access Token atau password). Untuk repo publik, keduanya sama — tidak diminta login.

Opsi clone yang perlu diketahui

Dua opsi yang cukup sering dipakai:

Shallow clone — hanya mengambil commit terbaru tanpa seluruh history. Berguna untuk repo besar yang cuma butuh kode terbaru. Misalnya kamu ingin coba pakai library tapi repo-nya punya ribuan commit yang tidak perlu kamu lihat:

git clone --depth 1 https://github.com/laravel/laravel.git

Kekurangannya: kamu tidak bisa melihat history lengkap atau checkout ke commit lama. Tapi untuk sekadar membaca kode terbaru atau menjalankan project, ini jauh lebih cepat — apalagi untuk repo yang sudah sangat tua seperti Laravel.

Clone ke branch tertentu — langsung checkout ke branch tertentu tanpa mendownload semua branch:

git clone -b develop --single-branch https://github.com/laravel/laravel.git

Apa Itu git fork?

Di sinilah banyak developer salah paham. Tidak ada command git fork di terminal. Kalau kamu ketik git fork di terminal, hasilnya:

git: 'fork' is not a git command.

Fork adalah fitur platform hosting — GitHub, GitLab, Bitbucket. Bukan perintah Git.

Secara teknis, fork membuat salinan repository di server (GitHub) di bawah akun kamu. Repository baru ini berdiri sendiri tapi tetap terhubung ke repository asli — GitHub menampilkan hubungan ini lewat fork graph.

Menurut GitHub Docs: "Forking a repository lets you propose changes to a project without affecting the upstream repository." Intinya: fork memberikan kamu ruang aman untuk bereksperimen atau berkontribusi tanpa mengganggu repo asli.

Apa yang terjadi saat fork?

Klik tombol Fork di GitHub (atau jalankan gh repo fork owner/repo), dan yang terjadi:

  1. GitHub membuat salinan repo di akun kamu — misalnya dari laravel/laravel jadi username/laravel.
  2. Hubungan ke repo asli tetap tercatat. GitHub tahu bahwa repo kamu adalah fork dari repo asli.
  3. Repository asli disebut upstream. Repository fork kamu bisa disebut origin (dari sudut pandang clone lokal nanti).

Yang penting: fork tidak membuat repo di komputer lokal kamu. Setelah fork, kamu punya copy di GitHub — tapi belum ada di lokal. Untuk mulai kerja, kamu tetap perlu git clone.


Perbedaan Kunci

Perbedaan paling mendasar: clone berjalan di lokal, fork berjalan di server (GitHub).

git clonegit fork
LokasiKomputer lokal kamuServer GitHub (akun kamu)
Siapa yang menjalankanGit (perintah CLI)GitHub (tombol / gh repo fork)
Akun GitHub diperlukan?Tidak (repo publik)Ya
Membuat repo di GitHub?TidakYa
Membuat repo di lokal?YaTidak (perlu clone setelah fork)
Perintahgit clone <url>Tombol Fork / gh repo fork / GitHub Desktop
Use case utamaBaca/kerjakan kode di lokalKontribusi ke proyek tanpa write access

Poin penting dari tabel di atas:

  • Clone tanpa fork: kamu punya copy lokal, tapi tidak ada copy di GitHub. Cocok untuk baca atau pelajari kode, atau kalau kamu sudah punya akses write ke repo.
  • Fork tanpa clone: kamu punya copy di GitHub, tapi belum ada di lokal. Belum bisa kerja apa-apa — perlu clone dulu.
  • Sering dipakai bersamaan: fork dulu di GitHub, lalu clone fork ke lokal. Ini workflow standar untuk kontribusi open source.

Workflow Kontribusi Open Source

Kalau kamu ingin berkontribusi ke proyek orang lain — misalnya fix bug di Laravel — tapi tidak punya akses write langsung ke repository asli, workflow-nya begini:

Langkah 1: Fork di GitHub

Buka halaman repo yang ingin kamu kontribusi, klik tombol Fork. Atau pakai GitHub CLI:

gh repo fork laravel/laravel

Repo fork sekarang ada di akun GitHub kamu.

Langkah 2: Clone fork ke lokal

git clone https://github.com/USERNAME/laravel.git
cd laravel

Perhatikan: URL-nya bukan laravel/laravel lagi, tapi USERNAME/laravel — karena yang kamu clone adalah fork kamu sendiri. Remote origin otomatis menunjuk ke fork ini.

Langkah 3: Tambahkan remote upstream

Ini langkah yang sering dilupakan tapi sangat penting. Tambahkan remote yang menunjuk ke repository asli:

git remote add upstream https://github.com/laravel/laravel.git

Cek hasilnya:

git remote -v
origin  https://github.com/USERNAME/laravel.git (fetch)
origin  https://github.com/USERNAME/laravel.git (push)
upstream  https://github.com/laravel/laravel.git (fetch)
upstream  https://github.com/laravel/laravel.git (push)

Sekarang kamu punya dua remote: origin (fork kamu) dan upstream (repo asli). Kalau ada yang bingung soal remote, artikel tentang mengganti remote repository menjelaskan lebih detail.

Langkah 4: Buat branch, kerja, push

Jangan langsung kerja di branch main. Buat branch terpisah untuk setiap perubahan — ini best practice yang menjaga main tetap bersih dan membuatnya lebih mudah untuk sync nanti:

git checkout -b fix/bug-123

Kerja, commit, lalu push ke fork:

git add .
git commit -m "fix: resolve bug #123"
git push origin fix/bug-123

Langkah 5: Buka Pull Request

Di GitHub, buka Pull Request dari branch fix/bug-123 di fork kamu ke branch main di repository asli. Berikan judul dan deskripsi yang jelas. Maintainer akan review dan, kalau disetujui, merge perubahan kamu ke project.


Syncing Fork dengan Upstream

Ini bagian yang sering terlupakan. Perubahan di repository asli tidak otomatis masuk ke fork kamu. Kalau maintainer merilis fix baru atau merge PR lain, fork kamu tetap di versi lama. Ini bukan bug — memang desainnya begitu. Fork adalah copy independen yang hubungannya hanya berupa link di GitHub.

Kalau kamu kerja di fork yang sudah lama tidak di-sync, kemungkinan besar akan konflik saat buka PR. Jadi, sync dulu sebelum mulai kerja baru. Biasakan melakukan ini sebagai langkah pertama setiap kali mau kerja di fork.

Dari command line

git fetch upstream
git checkout main
git merge upstream/main
git push origin main

git fetch upstream mendownload perubahan terbaru dari repo asli tanpa langsung merge. Setelah itu kamu checkout ke main lokal, merge perubahan dari upstream/main, lalu push ke fork kamu di GitHub.

Kadang saat merge, Git memunculkan konflik — misalnya kamu sudah mengubah file yang juga diubah maintainer di upstream. Ini wajar, bukan tanda kamu melakukan kesalahan. Git menandai file yang konflik, kamu perlu memutuskan versi mana yang dipertahankan, lalu selesaikan dengan git add dan git commit. Karena itulah lebih baik menyelesaikan semua pekerjaan di branch terpisah dan menjaga main lokal sejalan dengan upstream — ini memperkecil kemungkinan konflik saat sync.

Dari web UI

Buka halaman fork kamu di GitHub. Ada tombol Sync fork di bagian atas — klik lalu pilih Update branch. Ini cara paling cepat kalau hanya perlu sync cepat tanpa perubahan di branch lokal.

Dari GitHub CLI

gh repo sync USERNAME/laravel -b main

Kalau ada conflict, tambahkan flag --force — tapi hati-hati, ini akan menimpa perubahan lokal kamu.


Kapan Cukup Clone (Tanpa Fork)?

Fork bukan selalu langkah wajib. Dalam banyak situasi, clone langsung sudah cukup:

Kamu collaborator atau anggota repository. Kalau kamu punya akses write — misalnya kamu anggota tim di repo perusahaan — cukup clone dan langsung push. Tidak perlu fork.

Hanya ingin membaca atau menjalankan kode. Mau belajar source code Laravel? Cukup clone langsung. Mau coba library baru sebelum pakai di project? Clone, install dependencies, eksplorasi.

Repository milik kamu sendiri. Clone langsung ke lokal, atau kalau repository baru di GitHub, push langsung setelah git init.

Mari kita lihat satu contoh nyata supaya makin jelas. Kamu bekerja di perusahaan yang pakai package PHP seperti Spatie Permission di project internal. Tim kamu menemukan bug di package tersebut. Karena repo Spatie bukan milik kamu dan kamu tidak punya akses write, kamu tidak bisa langsung push fix-nya. Kamu perlu fork terlebih dahulu, lalu lewat workflow fork → clone → branch → push → PR untuk mengirimkan perbaikan ke maintainer. Kalau kamu Cuma ingin menggunakan package itu dan membaca cara kerjanya, clone langsung sudah lebih dari cukup.

Singkatnya: fork dibutuhkan ketika kamu tidak punya akses write ke repo asli tapi ingin kontribusi. Clone cukup ketika kamu hanya memakai kodenya, atau sudah punya hak akses.

Kapan Harus Fork?

Berkontribusi ke proyek open source. Ini use case utama. Kamu tidak punya akses push ke laravel/laravel, tapi ingin fix bug atau tambah fitur. Fork → clone → kerja → push → PR.

Ingin bereksperimen tanpa risiko. Mau coba refactor besar-besaran pada dependency project kamu? Fork dulu, eksperimen di fork, dan kalau hasilnya bagus, baru terapkan ke project asli. Ini juga berguna saat kamu ingin membuat project baru yang terinspirasi dari project lain — fork, lalu modifikasi sesuai kebutuhan. Yang perlu diingat: kalau kamu tidak berencana kontribusi balik ke upstream, fork sebenarnya tidak wajib. Tapi tetap berguna untuk menjaga link ke repo asli di GitHub.

Ingin berkontribusi ke banyak project sekaligus. Kalau kamu aktif berkontribusi ke beberapa project open source, fork memberi kamu satu tempat terpusat di akun GitHub untuk mengelola semua salinan yang sedang kamu kerjakan. Dari situ kamu bisa melihat fork graph — siapa yang fork repo kamu, atau update mana yang sudah masuk ke upstream — tanpa harus membuka halaman masing-masing repository. Cloning langsung tidak memberi kamu gambaran ini karena dia hanya menyalin ke lokal, tanpa jejak di GitHub.


Miskonsepsi Umum

Beberapa kesalahpahaman yang masih sering ditemui:

"Fork sama dengan clone"

Tidak. Fork berjalan di server GitHub, clone berjalan di komputer lokal. Keduanya membuat salinan, tapi di level yang berbeda dan dengan tujuan yang berbeda.

"Setelah clone, saya sudah punya repo di GitHub"

Tidak. Clone hanya membuat copy lokal. Kalau ingin punya copy di GitHub, push ke remote baru — atau fork dulu, lalu clone fork.

"Git punya command fork"

Tidak. git fork tidak ada. Fork adalah fitur GitHub/GitLab/Bitbucket. Git sendiri tidak mengenal istilah fork.

"Setelah fork, perubahan dari upstream otomatis masuk"

Tidak. Sync dilakukan secara manual — lewat command line, GitHub CLI, atau tombol "Sync fork" di web UI. Kalau tidak pernah sync, fork kamu akan ketinggalan dari upstream.


Penutup

git clone dan git fork memang keduanya membuat salinan repository, tapi berbeda secara fundamental:

  • git clone = perintah Git lokal. Menduplikasi repository ke komputer kamu. Tidak memerlukan akun GitHub untuk repo publik.
  • git fork = fitur server-side GitHub. Membuat salinan repository di akun GitHub kamu. Memerlukan akun. Tidak ada command git fork di terminal.

Untuk workflow kontribusi open source: fork di GitHub, clone fork ke lokal, tambahkan remote upstream, buat branch terpisah, kerja, push, lalu buka Pull Request. Jangan lupa sync fork dengan upstream secara berkala supaya tidak ketinggalan perubahan.

Kalau cukup baca atau jalankan kode — atau sudah punya akses write — clone langsung sudah cukup. Tidak perlu fork.

Yang terpenting: pahami konteksnya. Mengetahui kapan harus clone langsung dan kapan harus fork akan membuatmu lebih efektif berkontribusi ke ekosistem open source.

Kalau kamu baru belajar Git dan GitHub, pemahaman tentang dan ini adalah fondasi penting. Untuk langkah selanjutnya, kamu mungkin perlu tahu cara menghubungkan project lokal ke GitHub atau setup SSH key di Windows agar push dan pull lebih praktis tanpa perlu memasukkan password berulang kali. Kalau sempat mengalami error autentikasi, artikel cara mengatasi permission denied publickey dan cara mengganti remote repository akan sangat membantu.

Untuk pendalaman lebih lanjut, dokumentasi resmi adalah rujukan terbaik: Fork a repository, About forks, Syncing a fork, Contributing to a project, dan git clone Documentation.

Bagikan Artikel:
Diskusi & Komentar

Fitur komentar belum diaktifkan oleh administrator.

Artikel Terkait

Selesai membaca? Kembali ke beranda untuk melihat artikel menarik lainnya.

Kembali ke Beranda