Panduan

git clone: cara mengkloning repositori dari GitHub dan lainnya

Diperbarui: · Skillaria.Top

git clone mengunduh repositori remote secara utuh, yaitu semua berkas, seluruh riwayat commit, dan cabang, lalu membuat salinan lokal dengan remote origin yang sudah terhubung. Pemakaian dasarnya git clone alamat-repositori. Opsi memungkinkan memilih folder, cabang, atau hanya mengunduh commit terakhir dengan --depth 1.

Perintah git clone membuat salinan lokal lengkap dari repositori remote: berkas, seluruh riwayat commit, cabang, dan tag. Ini cara standar untuk mulai bekerja dengan proyek yang sudah ada di GitHub, GitLab, atau server perusahaan. Berbeda dengan mengunduh arsip ZIP, hasil kloning adalah repositori penuh yang bisa dipakai untuk commit dan mengirim perubahan kembali.

Penggunaan dasar git clone

Salin alamat repositori (di GitHub, tombol hijau «Code») lalu jalankan:

git clone https://github.com/username/project.git
Cloning into 'project'...
remote: Enumerating objects: 1532, done.
remote: Counting objects: 100% (1532/1532), done.
remote: Compressing objects: 100% (812/812), done.
Receiving objects: 100% (1532/1532), 2.41 MiB | 6.10 MiB/s, done.
Resolving deltas: 100% (701/701), done.

Git akan membuat folder project di direktori saat ini (namanya diambil dari alamat tanpa .git). Setelah itu, masuk ke dalam folder tersebut:

cd project
git status

Apa yang dilakukan git clone di balik layar

Kloning bukan sekadar mengunduh berkas. Memahami langkah-langkahnya menjelaskan mengapa setelah kloning semuanya «langsung berfungsi» dan dari mana cabang dengan awalan origin/ berasal. Secara berurutan, perintah ini:

  1. membuat folder dan menjalankan semacam git init di dalamnya;
  2. menambahkan remote bernama origin yang menunjuk ke alamat sumber;
  3. mengunduh semua objek dan referensi — setara dengan git fetch;
  4. membuat cabang remote origin/main, origin/develop, dan seterusnya;
  5. membuat cabang lokal default (biasanya main), menghubungkannya dengan origin/main, dan menampilkan berkasnya.

Karena itu, setelah kloning Anda tidak perlu mengatur git remote secara manual; git push dan git pull langsung bisa dipakai.

git remote -v
origin  https://github.com/username/project.git (fetch)
origin  https://github.com/username/project.git (push)

Kloning lewat HTTPS dan SSH

HTTPSSSH
Alamathttps://github.com/user/repo.gitgit@github.com:user/repo.git
Repositori publikBisa dikloning tanpa loginPerlu kunci SSH yang sudah ditambahkan ke akun
Repositori privat, pushPerlu Personal Access Token sebagai pengganti kata sandiBerjalan dengan kunci, tanpa memasukkan kata sandi
Jaringan perusahaanPort 443 hampir selalu terbukaPort 22 kadang diblokir

Untuk membaca proyek open source milik orang lain, HTTPS sudah cukup. Untuk repositori Anda sendiri yang sering di-push, SSH lebih praktis:

git clone git@github.com:username/project.git

Jika sudah terlanjur mengklon lewat HTTPS dan ingin beralih ke SSH, tidak perlu mengunduh ulang:

git remote set-url origin git@github.com:username/project.git

Kloning ke folder tertentu

Argumen kedua adalah nama atau path folder tujuan:

# Ke folder dengan nama lain
git clone https://github.com/username/project.git my-copy

# Ke folder saat ini (harus kosong)
git clone https://github.com/username/project.git .

Jika folder tujuan sudah ada dan tidak kosong, Git akan menolak: fatal: destination path 'project' already exists and is not an empty directory.

Kloning cabang tertentu

Secara default, setelah kloning Anda berada di cabang default repositori remote. Untuk langsung berpindah ke cabang lain, gunakan -b (--branch):

git clone -b develop https://github.com/username/project.git

Perlu diperhatikan: semua cabang tetap diunduh, Anda hanya langsung berada di develop. Jika hanya ingin satu cabang tanpa cabang lain, tambahkan --single-branch:

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

Flag -b juga menerima nama tag. Dengan begitu Anda mendapatkan keadaan proyek pada saat rilis (dalam mode detached HEAD):

git clone -b v2.1.0 --depth 1 https://github.com/username/project.git

Di mana cabang lainnya setelah kloning

Pemula sering heran karena git branch hanya menampilkan main. Cabang lain sudah diunduh sebagai cabang remote, dan Anda bisa melihatnya dengan:

git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/develop
  remotes/origin/feature/login

Untuk mulai bekerja di salah satunya, cukup pindah dengan nama pendeknya. Git akan membuat cabang lokal yang melacak cabang remote tersebut:

git switch develop

Kloning dangkal: --depth untuk repositori besar

Riwayat proyek lama bisa mencapai gigabyte. Jika yang Anda butuhkan hanya kode terbaru, misalnya di CI atau sekadar untuk membangun proyek, unduh commit terakhir saja:

git clone --depth 1 https://github.com/username/big-project.git

Flag --depth otomatis mengaktifkan --single-branch, sehingga hanya cabang default dengan satu commit yang diunduh. Jika nanti Anda membutuhkan seluruh riwayat, unduh sisanya:

git fetch --unshallow

Kedalaman lain juga bisa ditentukan, misalnya --depth 50, atau riwayat dibatasi berdasarkan tanggal dengan --shallow-since=2025-01-01. Untuk pengembangan aktif, kloning dangkal kurang nyaman: git log, git blame, dan pencarian di riwayat akan tidak lengkap.

Kloning parsial: --filter

Alternatif untuk monorepo yang sangat besar adalah mengunduh riwayat commit, sementara isi berkas diambil saat dibutuhkan:

git clone --filter=blob:none https://github.com/username/monorepo.git

Dengan cara ini riwayat lengkap tetap tersedia untuk log dan perpindahan cabang, tetapi lalu lintas data dan ruang disk lebih hemat. Fitur ini membutuhkan dukungan dari server; GitHub dan GitLab mendukungnya.

Kloning mirror dan memindahkan repositori

Kloning biasa mengambil cabang sebagai cabang remote dan tidak menyalin referensi internal server. Untuk memindahkan proyek ke hosting lain atau membuat cadangan yang identik, gunakan --mirror:

git clone --mirror https://github.com/username/project.git
cd project.git
git push --mirror git@gitlab.com:username/project.git

Mirror adalah repositori bare tanpa berkas kerja, yang menyimpan semua cabang dan tag sebagai cabang dan tag lokal. Perintah git push --mirror akan mengirim semuanya ke server baru, sehingga riwayat berpindah tanpa kehilangan apa pun. Namun perlu diingat bahwa tugas (issue), pull request, dan pengaturan hosting tidak ikut berpindah, karena itu data layanan, bukan Git.

Flag --bare juga membuat repositori tanpa direktori kerja, tetapi hanya menyalin cabang dan tag. Ini cocok untuk membuat repositori pusat di server sendiri dari proyek yang sudah ada.

Kloning dengan submodul

Jika proyek memakai git submodule, folder submodulnya akan kosong secara default. Untuk mengunduh semuanya sekaligus:

git clone --recurse-submodules https://github.com/username/project.git

Jika sudah terlanjur mengklon tanpa flag ini, unduh submodulnya dengan:

git submodule update --init --recursive

git clone, fork, dan unduhan ZIP

CaraYang didapatKapan dipakai
git cloneRepositori lengkap dengan riwayat dan remoteMengerjakan proyek yang Anda punya aksesnya atau butuh riwayatnya
Fork di GitHubSalinan repositori di akun Anda di serverBerkontribusi ke proyek orang lain lewat pull request
Download ZIPHanya berkas, tanpa .gitSekadar melihat kode, tidak berencana commit

Fork dan clone tidak saling bersaing. Dalam proyek open source, biasanya Anda membuat fork di situs terlebih dahulu, lalu mengklon fork milik Anda dan menambahkan repositori asli sebagai remote kedua:

git clone git@github.com:me/project.git
cd project
git remote add upstream https://github.com/author/project.git
git fetch upstream

Kesalahan umum pada git clone

«Repository not found»

Alamatnya salah ketik, atau repositorinya privat dan Anda tidak punya akses. GitHub sengaja menjawab «not found» untuk repositori privat, bukan «akses ditolak». Periksa alamatnya dan pastikan Anda login dengan akun yang benar.

«Permission denied (publickey)»

Kloning dilakukan lewat SSH, tetapi kuncinya belum diatur. Jalankan ssh -T git@github.com, tambahkan kunci publik ke pengaturan akun, atau untuk sementara kloning lewat HTTPS.

«Authentication failed» lewat HTTPS

Anda memasukkan kata sandi akun. GitHub sudah lama mewajibkan Personal Access Token sebagai pengganti kata sandi untuk operasi Git lewat HTTPS. Jika Git menyimpan kredensial yang salah, hapus dari pengelola kredensial sistem Anda.

Kloning terputus di repositori besar

Error seperti early EOF atau RPC failed biasanya disebabkan jaringan yang tidak stabil atau ukuran repositori. Solusinya: kloning dangkal dengan --depth 1 lalu git fetch --unshallow, atau kloning lewat SSH.

Masalah pergantian baris di Windows

Setelah kloning, semua berkas tampak «berubah». Ini efek konversi CRLF/LF. Di Windows atur git config --global core.autocrlf true (atau input di Linux dan macOS), dan sebaiknya tetapkan aturannya di .gitattributes proyek.

Yang perlu dilakukan setelah kloning

Kloning sudah selesai, tetapi sebelum mengubah kode, luangkan beberapa menit untuk persiapan. Ini mencegah masalah umum di hari pertama bekerja dengan proyek orang lain.

  1. Baca README dan CONTRIBUTING. Biasanya di sana dijelaskan cara memasang dependensi, menjalankan tes, dan konvensi penamaan cabang.
  2. Periksa cabang dan kondisi repositori. git status dan git log --oneline -5 menunjukkan posisi Anda dan perubahan terakhir.
  3. Buat cabang sendiri. Jangan bekerja langsung di main: git switch -c feature/my-task.
  4. Periksa penulis commit. Jika di komputer ada beberapa akun (pribadi dan kerja), atur e-mail khusus untuk repositori ini tanpa --global: git config user.email "you@company.com".
  5. Pasang dependensi. Folder seperti node_modules atau venv tidak disimpan di repositori; dibuat secara lokal dengan npm install, pip install -r requirements.txt, dan sejenisnya.

Menjaga salinan lokal tetap mutakhir

Kloning hanya dilakukan sekali. Setelahnya, commit baru dari rekan tim diambil dari origin yang sama:

# Lihat apa yang ada di server tanpa mengubah apa pun
git fetch
git log --oneline main..origin/main

# Gabungkan perubahan ke cabang aktif
git pull

Kebiasaan menjalankan git fetch dulu dan melihat apa yang datang dapat mencegah konflik yang tidak terduga. Tidak perlu mengklon ulang proyek hanya untuk memperbaruinya, karena cara itu bisa menghilangkan cabang lokal dan pekerjaan yang belum di-commit.

Contekan git clone

TugasPerintah
Kloning biasagit clone <url>
Ke folder sendirigit clone <url> <folder>
Langsung di cabang tertentugit clone -b <cabang> <url>
Hanya satu cabanggit clone -b <cabang> --single-branch <url>
Tanpa riwayatgit clone --depth 1 <url>
Tanpa isi berkas lamagit clone --filter=blob:none <url>
Dengan submodulgit clone --recurse-submodules <url>
Salinan bare untuk servergit clone --bare <url>

Ringkasan

git clone mengunduh repositori secara utuh dan langsung menyiapkan hubungan dengan server lewat origin, sehingga setelahnya Anda bisa commit, push, dan pull tanpa konfigurasi tambahan. Untuk proyek sendiri gunakan SSH, untuk repositori besar gunakan --depth atau --filter, dan untuk cabang tertentu gunakan -b. Bekerja dengan repositori remote, push, pull, dan fetch dibahas dengan praktik dalam kursus Git.

Pertanyaan umum

Apa bedanya git clone dengan git pull?

git clone dijalankan sekali dan membuat salinan repositori baru di komputer Anda. git pull dijalankan di dalam salinan yang sudah ada dan mengambil perubahan baru dari server.

Bisakah hanya satu folder dari repositori yang dikloning?

Tidak secara langsung. Pendekatan terdekat adalah kloning parsial dengan --filter=blob:none --sparse lalu git sparse-checkout set path, sehingga hanya folder yang dibutuhkan muncul di direktori kerja.

Seberapa besar ruang yang dipakai hasil kloning?

Kurang lebih sebesar seluruh riwayat dalam bentuk terkompresi ditambah berkas versi terbaru. Ukuran repositori bisa dicek dengan git count-objects -vH.

Bisakah mengklon repositori lokal?

Bisa. Ganti alamat dengan path, misalnya git clone /path/ke/repo salinan. Ini berguna untuk bereksperimen tanpa mengambil risiko pada salinan utama.

Apakah perlu menjalankan git init sebelum git clone?

Tidak. git clone sudah membuat folder dan menginisialisasi repositori di dalamnya.

Pelajari topik ini lewat video

Topik ini dibahas mendalam dengan praktik di kursus “Git dari Nol hingga Pengembang Percaya Diri”.

Ke kursus