Pola paling populer dalam belajar Git adalah git clone — remote origin hadir otomatis begitu prosesnya selesai. Namun arah sebaliknya sama seringnya terjadi di dunia nyata: proyek sudah berjalan beberapa minggu sebagai repository lokal — lengkap dengan commit-commit hasil kerja — dan baru kemudian tim memutuskan menyiapkan titik temu di server. Situasi ini tidak butuh clone ulang; kita cukup menghubungkan repository yang ada ke remote dengan git remote add. Chapter ini mempraktikkan alur lengkapnya: mendaftarkan origin, memverifikasi buku alamat, lalu menjalankan fetch pertama untuk mengisi salinan penunjuk cabang remote.

Repository Lokal yang Sudah Berjalan #

Lab kita memisahkan dua sisi cerita. Di satu sisi ada repository lokal Budi yang lahir dari git init — bukan dari clone — dan sudah menampung dua commit:

bash
git init -b main budi && cd budi
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf '# Toko Budi\n' > README.md
git add README.md
git commit -m "Buat README toko"
printf '# Toko Budi\n\n## Jam Buka\n- Senin-Jumat 09.00-17.00\n' > panduan.md
git add panduan.md
git commit -m "Tambah panduan toko"
git log --oneline

Output yang Dihasilkan:

text
4c0ff5b Tambah panduan toko
2bd3e21 Buat README toko

Repository ini sehat, tetapi sama sekali tidak mengenal remote: git remote belum menampilkan apa pun dan tidak ada origin di buku alamatnya. Di sisi lain, administrator tim menyiapkan server pusat.git dan menaruh salinan awal proyek Budi di sana dengan git clone --bare — varian clone yang menyalin database riwayat saja tanpa working tree, persis bentuk yang kita kenal dari chapter Konsep Remote :

bash
git clone --bare budi pusat.git

Output yang Dihasilkan:

text
Cloning into bare repository 'pusat.git'...
done.

Tidak ada yang diubah di repository Budi — baris di atas hanya menumbuhkan salinan di sisi server. Kini budi (lokal) dan pusat.git (remote) memuat riwayat yang sama, dan tugas kita adalah mengenalkan keduanya.

Mendaftarkan origin dengan git remote add #

Entri remote didaftarkan dengan pola git remote add <nama> <alamat>. Kita pakai nama origin — mengikuti konvensi yang sama seperti yang diberikan git clone secara otomatis:

bash
git remote add origin ../pusat.git
git remote -v

Output yang Dihasilkan:

text
origin	../pusat.git (fetch)
origin	../pusat.git (push)

Perintah add bekerja dalam senyap, jadi verifikasi lewat git remote -v adalah langkah wajib: dua baris origin menandakan hubungan dua arah sudah tercatat. Alamat yang tersimpan adalah jalur relatif ../pusat.git — persis seperti yang kita ketik; pada kerja nyata posisinya adalah URL server, misalnya https://github.com/budi/toko-budi.git, dan bentuk-bentuk URL itu kita bedah pada chapter Mengganti Remote URL .

Fetch Pertama: Mengisi Salinan Penunjuk #

Koneksi baru ini belum membawa satu commit pun ke mana pun. Agar Git lokal mengenal isi remote, kita jalankan git fetch untuk pertama kalinya — pembahasan penuhnya menjadi agenda chapter git fetch :

bash
git fetch origin

Output yang Dihasilkan:

text
From ../pusat
 * [new branch]      main       -> origin/main

Baris * [new branch] main -> origin/main bukan berarti ada commit baru yang diunduh — salinan awal server memang sudah sama dengan milik Budi. Yang baru lahir adalah remote-tracking branch origin/main: salinan penunjuk yang mengingat posisi main di remote, ikut terlihat di daftar cabang sisi remote:

bash
git branch -r

Output yang Dihasilkan:

text
  origin/main

Perhatikan satu hal penting yang sering mengejutkan pemula — mari kita periksa status branch lokal:

bash
git status

Output yang Dihasilkan:

text
On branch main
nothing to commit, working tree clean

Tidak ada laporan up to date with 'origin/main', padahal origin/main sudah ada. Sebabnya: git remote add hanya mengisi buku alamat dan git fetch hanya mengisi salinan penunjuk — keduanya tidak mengikat branch main lokal ke origin/main. Ikatan itu baru terbentuk saat push dengan flag -u (chapter git push ) atau lewat --set-upstream-to (chapter Upstream Branch ).

Konvensi Nama: origin dan upstream #

Nama origin tidak diwajibkan Git — ia murni konvensi, seperti dibahas chapter Konsep Remote . Namun dalam ekosistem open source ada kesepakatan nama kedua yang perlu kita kenal sejak dini: pada pola fork, salinan milik kita (fork) didaftarkan sebagai origin, sedangkan repository asal proyek didaftarkan sebagai upstream. Dengan dua entri ini kita bisa menarik perkembangan proyek asal dari upstream sambil mendorong pekerjaan ke fork sendiri di origin.

| Nama konvensi | Menunjuk ke | Peran utama | | — | — | | origin | Salinan utama tempat kita mengirim pekerjaan | push dan pull sehari-hari | | upstream | Repository asal proyek (pada alur fork) | fetch perkembangan proyek |

Keduanya hanyalah nama panggilan — dari sisi Git, keduanya setara dan bisa saja tim memakai nama lain seperti pusat atau mirror. Alur kerja fork lengkap dengan sinkronisasi upstream dibahas tuntas pada chapter Fork dan Upstream , dan panduan resmi pengelolaan remote bisa dibaca di Pro Git: Working with Remotes .

Buku alamat sudah bisa diisi. Bagaimana bila entri yang sudah ada harus berpindah alamat — server migrasi, protokol berganti dari HTTPS ke SSH? Jawabannya satu perintah git remote set-url, pokok bahasan chapter berikutnya.