Kalau remote adalah alamat tempat kita bertukar commit, git remote adalah buku alamatnya. Kita sudah melihat dua pintu masuk ke buku alamat ini tanpa menyadarinya: git clone mengisi satu entri secara otomatis, dan git remote add mencantumkan entri baru secara manual. Pertanyaan yang kerap muncul di tengah kerja tim justru praktis: remote apa saja yang terdaftar di repository ini, alamatnya ke mana, dan bagaimana menata ulang daftar itu ketika server berpindah atau nama panggilan membingungkan? Chapter ini membahas git remote sebagai satu keluarga perintah untuk menjawab semuanya.

Membaca Daftar Remote #

Lab kita meniru pola chapter sebelumnya: repository pusat proyek-utama.git berisi dua commit milik Budi, dan Budi bekerja pada clone-nya. Dari dalam clone, daftar remote paling ringkas dibaca tanpa argumen apa pun:

bash
git remote

Output yang Dihasilkan:

text
origin

Satu baris, satu nama: origin. Perintah ini hanya menampilkan nama panggilan — cukup untuk mengingat “repository ini terhubung ke mana saja”, namun belum menunjukkan alamat sesungguhnya. Alamat ditampilkan dengan flag -v:

bash
git remote -v

Output yang Dihasilkan:

text
origin	/home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-daftar/proyek-utama.git (fetch)
origin	/home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-daftar/proyek-utama.git (push)

Setiap baris terdiri atas tiga bagian: nama remote, alamatnya, dan peran baris itu. Dua baris dengan nama sama menandakan satu remote yang alamatnya dipakai dua arah — (fetch) untuk mengambil perubahan, (push) untuk mengirim perubahan. Pada umumnya kedua alamat itu identik; pasangan yang berbeda hanya relevan untuk pola khusus seperti URL push cadangan, yang kita bahas di chapter Mengganti Remote URL . Perlu dicatat, antara nama dan alamat pada keluaran di atas terdapat karakter TAB — begitu pula pada keluaran -v sepanjang chapter ini, meski mata kita membacanya seperti spasi.

Membedah Kondisi Remote dengan show #

Daftar dan alamat hanyalah bagian statis. Pertanyaan yang lebih tajam — “cabang apa saja yang ada di remote, dan apakah salinan saya masih sejalan?” — dijawab oleh git remote show dengan nama remote sebagai argumen:

bash
git remote show origin

Output yang Dihasilkan:

text
* remote origin
  Fetch URL: /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-daftar/proyek-utama.git
  Push  URL: /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-daftar/proyek-utama.git
  HEAD branch: main
  Remote branch:
    main tracked
  Local branch configured for 'git pull':
    main merges with remote main
  Local ref configured for 'git push':
    main pushes to main (up to date)

Kita baca laporan ini bagian demi bagian. Baris * remote origin adalah kepala laporan untuk remote bernama origin. Fetch URL dan Push URL mengulang kedua alamat tadi. HEAD branch: main menyebut cabang bawaan yang akan diterima git clone baru. Bagian Remote branch: mendaftar cabang di sisi remote — di sini satu-satunya main, dan catatan tracked berarti Git menyimpan salinan penunjuknya secara lokal. Bagian Local branch configured for 'git pull': memetakan cabang lokal ke pasangannya di remote, dan Local ref configured for 'git push': kebalikannya — lengkap dengan status up to date karena clone kita belum menyimpang dari origin. Satu laporan show dengan demikian meringkat seluruh pengaturan kolaborasi repository kita.

Menambah, Mengganti Nama, dan Menghapus Entri #

Tim kita menyiapkan satu server cadangan untuk mencadangkan repository. Entri baru didaftarkan dengan subcommand add — mirip pola git remote add origin ../pusat.git yang akan kita praktikkan penuh di chapter Menambahkan Remote :

bash
git remote add cadangan ../gudang-cadangan.git
git remote

Output yang Dihasilkan:

text
cadangan
origin

Daftar kini memuat dua nama, dan keduanya bisa dibedakan alamatnya lewat -v:

bash
git remote -v

Output yang Dihasilkan:

text
cadangan	../gudang-cadangan.git (fetch)
cadangan	../gudang-cadangan.git (push)
origin	/home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-daftar/proyek-utama.git (fetch)
origin	/home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-daftar/proyek-utama.git (push)

Perhatikan pola alamat yang berbeda: entri cadangan mencatat jalur relatif ../gudang-cadangan.git persis seperti yang kita ketik saat add, sedangkan origin memuat jalur absolut karena ia lahir dari git clone yang menyimpan alamat yang sudah dijabarkan penuh. Keduanya sama-sama sah — Git menyelesaikan jalur relatif terhadap posisi repository saat remote digunakan.

Nama panggilan boleh dirapikan kapan saja. Subcommand rename memindahkan cadangan menjadi backup — dan remove mengeluarkan entri dari buku alamat:

bash
git remote rename cadangan backup
git remote

Output yang Dihasilkan:

text
backup
origin
bash
git remote remove backup
git remote

Output yang Dihasilkan:

text
origin

Kedua subcommand ini bekerja dalam senyap — tanpa keluaran — sehingga daftar remote setelahnya menjadi bukti terbaik bahwa perintahnya berhasil.

Ringkasan Subcommand #

PerintahPeran
git remoteMenampilkan daftar nama remote
git remote -vMenampilkan nama, alamat, dan arah fetch/push
git remote add <nama> <url>Mendaftarkan remote baru
git remote rename <lama> <baru>Mengganti nama panggilan remote
git remote remove <nama>Menghapus remote beserta salinan cabangnya
git remote show <nama>Melaporkan cabang, tracking, dan status sinkron
git remote get-url <nama>Menampilkan alamat remote (chapter Mengganti Remote URL )
git remote set-url <nama> <url>Mengubah alamat remote (chapter Mengganti Remote URL )

Seluruh subcommand ini terdokumentasi lengkap di dokumentasi git remote . Buku alamat kini bisa kita baca dan tata; saatnya mengisinya lewat jalur yang paling sering ditemui di dunia nyata — repository lokal yang sudah berisi commit, dihubungkan ke server baru untuk pertama kalinya. Caranya ada di chapter berikutnya.