Git Remote & Clone — Git

Sejauh ini kamu bekerja di repository lokal. Di dunia nyata, kamu perlu berbagi kode dengan tim melalui remote repository (seperti GitHub, GitLab, atau…

Sejauh ini repo-mu cuma ada di laptopmu sendiri. Supaya bisa dipakai bareng tim, repo itu juga disimpan di server seperti GitHub, GitLab, atau Bitbucket. Salinan di server itu disebut remote. Mirip buku resep keluarga yang aslinya disimpan di rumah nenek. Tiap orang memfotokopi seluruh buku, lengkap dengan catatan revisinya, lalu menyimpannya di rumah masing-masing (itu git clone). Alamat rumah nenek kamu catat dengan nama panggilan origin. Kamu boleh menulis resep baru di salinanmu sendiri, tapi buku di rumah nenek gak berubah sampai kamu mengantarnya ke sana.

🧪 Tebakan cepat: kamu clone sebuah repo dari GitHub, lalu commit satu kali di laptop. Repo di GitHub ikut berubah gak? Tebak dulu, jawabannya ada di bagian "main dan origin/main".

Clone: menyalin repo dari server

Di GitHub ada repo toko kue dengan 3 commit. Salin ke laptop:

$ git clone https://github.com/budi/toko-kue.git
Cloning into 'toko-kue'...
remote: Enumerating objects: 9, done.
Receiving objects: 100% (9/9), done.
$ cd toko-kue
$ git log --oneline
c3d4e5f (HEAD -> main, origin/main, origin/HEAD) add harga
b2c3d4e add menu
a1b2c3d initial

Satu perintah git clone mengerjakan empat hal:

Sesudah clone, masuk dulu ke foldernya dengan cd toko-kue. Perintah Git cuma jalan di dalam folder repo.

Mau nama folder lain? Tulis namanya sesudah URL:

$ git clone https://github.com/budi/toko-kue.git proyek
Cloning into 'proyek'...

Melihat remote: git remote -v

$ git remote
origin
$ git remote -v
origin	https://github.com/budi/toko-kue.git (fetch)
origin	https://github.com/budi/toko-kue.git (push)

main dan origin/main

$ git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main

origin/main disebut remote-tracking branch: catatan Git tentang posisi main di GitHub waktu terakhir kali laptopmu berkomunikasi dengan GitHub. Kamu gak bekerja di sana. Kamu bekerja di main lokal.

Sekarang commit sekali di laptop:

$ echo "Brownies 25000" >> menu.txt
$ git add .
$ git commit -m "tambah brownies"
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)
Sesudah main (laptop) origin/main main di GitHub
git clone add harga add harga add harga
commit "tambah brownies" tambah brownies add harga add harga

main maju, origin/main diam, dan repo di GitHub gak berubah sama sekali. Itu jawaban tebakannya: commit cuma ada di laptopmu sampai kamu mengirimnya dengan git push, yang dibahas di materi berikutnya.

Dari git init: git remote add

Kalau project-nya kamu mulai sendiri dengan git init, belum ada remote. Buat repo kosong di GitHub, lalu sambungkan:

$ git init
$ git add .
$ git commit -m "first commit"
$ git remote add origin https://github.com/budi/portofolio.git
$ git remote -v
origin	https://github.com/budi/portofolio.git (fetch)
origin	https://github.com/budi/portofolio.git (push)

💡 origin dan upstream

Waktu kamu fork project orang lain di GitHub (membuat salinan repo mereka di akun GitHub-mu), biasanya ada dua remote:

$ git remote add upstream https://github.com/pemilik/project.git
$ git remote
origin
upstream

⚠️ Jebakan yang sering ketemu

TL;DR: Remote adalah salinan repo di server seperti GitHub. git clone <url> membuat folder, mengunduh semua file dan riwayatnya, memasang remote bernama origin, dan menyiapkan main. Tambahkan nama folder sesudah URL untuk nama lain (git clone <url> proyek). git remote -v menampilkan nama remote dan URL-nya untuk fetch dan push. origin/main adalah catatan posisi main di GitHub: commit di laptop cuma menggeser main, dan GitHub gak berubah sampai kamu push. Repo dari git init disambungkan dengan git remote add origin <url>. Repo asli yang kamu fork biasanya dinamai upstream.

Yang akan kamu pelajari