Membuat repository

Membuat repository baru dengan git init dan mengambil repository yang sudah ada melalui cloning.

Daftar isi

Sebuah repository Git diperoleh melalui dua pintu: membuat repository baru di dalam folder yang sudah ada, atau menyalin repository yang sudah berjalan dari tempat lain. Topik ini membahas keduanya melalui git init dan git clone, isi folder .git yang melingkupinya, serta bentuk URL yang dipakai saat menyalin dari sumber jarak jauh. Setelah topik ini, folder latihan dengan riwayat siap dipakai pada topik-topik operasi harian.

Dua cara memperoleh repository#

Perintah git init mengubah folder biasa menjadi repository dengan membuat subfolder .git, yaitu tempat seluruh basis data objek dan konfigurasi tersimpan. Perintah ini tidak mengubah berkas apa pun di dalam folder, sehingga proyek yang sudah berjalan dapat diberi kontrol versi kapan saja tanpa risiko.

Perintah git clone menyalin repository lain secara utuh, termasuk seluruh riwayat commit, branch, dan tag. Cara ini dipakai ketika pekerjaan dimulai dari proyek yang sudah ada, misalnya proyek terbuka atau repository tim. Keduanya menghasilkan repository yang setara kemampuannya, dan perbedaannya hanya pada isi riwayat yang tersedia di dalamnya.

Membuat repository baru#

Buat folder latihan baru, masuk ke dalamnya, lalu inisialisasi repository dengan branch awal bernama main.

bash
rm -rf /tmp/lab-repo
mkdir /tmp/lab-repo
cd /tmp/lab-repo
git init -b main
text Keluaran
Initialized empty Git repository in /tmp/lab-repo/.git/

Pesan di atas menyatakan bahwa repository kosong telah dibuat pada folder .git di dalam lab-repo. Folder tersebut masih kosong dari sisi berkas proyek, tetapi sudah menjadi repository penuh. Daftar isinya dapat diperiksa langsung.

bash
ls -A
text Keluaran
.git
bash
ls .git
text Keluaran
HEAD
branches
config
description
hooks
info
objects
refs

Subfolder objects menyimpan seluruh objek blob, tree, dan commit, sedangkan refs menyimpan penunjuk branch dan tag. Berkas HEAD menunjuk branch aktif, dan config menyimpan konfigurasi tingkat repository. Seluruh perintah Git pada jalur ini pada dasarnya membaca dan menulis folder tersebut, tanpa pernah menyentuh berkas proyek di luar kebutuhan.

Menjalankan git init pada repository yang sudah ada tidak merusak apa pun.

bash
git init -b main
text Keluaran
warning: re-init: ignored --initial-branch=main
Reinitialized existing Git repository in /tmp/lab-repo/.git/

Pesan Reinitialized menyatakan bahwa repository sudah ada dan isinya dibiarkan utuh. Sifat ini membuat git init aman dijalankan berulang, misalnya pada skrip penyiapan yang tidak selalu tahu apakah repository sudah dibuat.

Cloning repository yang sudah ada#

Clone membutuhkan repository sumber yang memiliki setidaknya satu commit. Tanggal commit pada contoh ditetapkan lebih dahulu agar hash yang muncul pada keluaran dapat direproduksi, kemudian siapkan sumber latihan di folder terpisah, lalu salinlah.

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-sumber
mkdir /tmp/lab-sumber
cd /tmp/lab-sumber
git init -b main
git config user.name "Budi"
git config user.email "[email protected]"
printf "# Proyek Latihan\n" > README.md
git add README.md
git commit -m "Commit awal"
text Keluaran
Initialized empty Git repository in /tmp/lab-sumber/.git/
[main (root-commit) 05d24d1] Commit awal
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
bash
cd /tmp
rm -rf salinan
git clone lab-sumber salinan
git -C salinan log --oneline
text Keluaran
Cloning into 'salinan'...
done.
05d24d1 Commit awal

Folder salinan kini adalah repository penuh, bukan sekadar salinan berkas. Perintah git -C salinan menjalankan Git di dalam folder itu tanpa berpindah direktori, dan log menunjukkan riwayat yang ikut tersalin. Clone juga mengatur remote bernama origin yang menunjuk ke sumbernya, sehingga sinkronisasi dua arah siap dipakai.

Bentuk URL repository#

Sumber clone dinyatakan sebagai URL, dan bentuknya menentukan cara Git menghubungi sumber tersebut.

BentukContohKeterangan
Jalur lokal/tmp/lab-sumber atau lab-sumberMenyalin dari folder pada mesin yang sama.
HTTPShttps://github.com/nama-pengguna/proyek.gitMemakai kredensial HTTPS saat mengirim perubahan.
SSH[email protected]:nama-pengguna/proyek.gitMemakai kunci SSH yang sudah didaftarkan pada layanan hosting.
bash
# tidak-dijalankan
# cloning dari layanan hosting memerlukan akses jaringan
git clone https://github.com/nama-pengguna/proyek.git
git clone [email protected]:nama-pengguna/proyek.git

URL HTTPS dipakai paling luas karena dapat melewati sebagian besar jaringan perusahaan, sedangkan SSH menghilangkan pengetikan kredensial berulang bagi pemilik repository. Jalur lokal dipakai sepanjang contoh pada jalur ini supaya setiap keluaran dapat direproduksi tanpa layanan luar.

Ringkasan#

  • git init -b main membuat repository baru dengan membuat folder .git, tanpa mengubah berkas proyek yang sudah ada.
  • .git menyimpan objek, penunjuk branch, konfigurasi, dan hook, sehingga seluruh riwayat proyek berada di dalam folder proyek itu sendiri.
  • git clone menyalin repository utuh beserta riwayatnya dan mengatur remote origin secara otomatis.
  • Sumber clone dinyatakan sebagai jalur lokal, URL HTTPS, atau URL SSH sesuai cara akses yang tersedia.

Referensi#