Alamat remote tidak selamanya awet. Tim berpindah dari server lama ke mesin baru, proyek pindah dari satu layanan hosting ke layanan lain, atau kita sekadar ingin beralih dari HTTPS ke SSH agar tidak lagi mengetik token setiap kali push. Kabar baiknya: seluruh riwayat, cabang, dan pengaturan upstream kita tidak perlu dibangun ulang — cukup satu entri buku alamat yang diganti isinya lewat git remote set-url. Chapter ini mempraktikkan pergantian alamat dalam tiga skenario: pindah server, ganti protokol HTTPS ke SSH, dan menempel URL push cadangan.
Membaca Alamat yang Sedang Terpasang #
Lab kita memakai clone Budi dari proyek-utama.git, persis pola chapter Konsep Remote
. Titik awal setiap pergantian alamat adalah membaca alamat yang sedang terpasang — flag -v dan subcommand get-url sama-sama bisa dipakai:
git remote -vOutput yang Dihasilkan:
origin /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-url/proyek-utama.git (fetch)
origin /home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-url/proyek-utama.git (push)git remote get-url originOutput yang Dihasilkan:
/home/z/my-project/tutorial-extracted/work/sandbox/remote-repository/part-a/latihan-url/proyek-utama.gitKedua keluaran memuat alamat yang sama; bedanya, get-url menampilkan alamat mentah satu baris — bentuk yang enak dipakai di skrip — tanpa label peran fetch/push. Karena clone menyimpan jalur absolut, alamat di atas tampak panjang; jalur pada keluaran menyesuaikan lokasi direktori masing-masing.
Pindah Server dengan set-url #
Skenario pertama: server tim berpindah mesin. Administrator sudah menyiapkan gudang-baru.git yang masih kosong, dan clone kita cukup diarahkan ulang — perintahnya git remote set-url <nama> <alamat-baru>:
git remote set-url origin ../gudang-baru.git
git remote -vOutput yang Dihasilkan:
origin ../gudang-baru.git (fetch)
origin ../gudang-baru.git (push)Kedua baris origin langsung menunjuk alamat baru; tidak ada keluaran dari set-url itu sendiri sehingga verifikasi -v menjadi kebiasaan yang sebaiknya kita bawa setiap kali mengganti alamat. Perhatikan juga bahwa perintah ini tidak menyentuh jaringan sama sekali — pergantian hanya menyentuh baris remote.origin.url di berkas konfigurasi, dan koneksi baru benar-benar terjadi saat git fetch atau git push berikutnya dijalankan.
Beralih antara HTTPS dan SSH #
Skenario kedua adalah dua format URL yang paling umum pada layanan hosting seperti GitHub. Format HTTPS menyertakan protokol dan akhiran .git:
https://github.com/budi/katalog-buku.gitFormat SSH memakai pola user@host:proyek — tanpa skema https, dengan titik dua sebagai pemisah:
[email protected]:budi/katalog-buku.gitPerbedaan praktisnya ada pada autentikasi: HTTPS meminta nama pengguna dan personal access token, sedangkan SSH memakai kunci kriptografi yang dipasang lebih dulu di komputer dan didaftarkan ke layanan — pembahasan mendalam tentang kedua jalur ini tersedia di chapter SSH vs HTTPS . Untuk beralih, tetap satu perintah yang sama:
git remote set-url origin https://github.com/budi/katalog-buku.git
git remote -vOutput yang Dihasilkan:
origin https://github.com/budi/katalog-buku.git (fetch)
origin https://github.com/budi/katalog-buku.git (push)git remote get-url originOutput yang Dihasilkan:
https://github.com/budi/katalog-buku.gitPergantian ke bentuk SSH pun identik — ganti alamatnya, lalu baca kembali:
git remote set-url origin [email protected]:budi/katalog-buku.git
git remote get-url originOutput yang Dihasilkan:
[email protected]:budi/katalog-buku.gitgit remote -vOutput yang Dihasilkan:
origin [email protected]:budi/katalog-buku.git (fetch)
origin [email protected]:budi/katalog-buku.git (push)URL Push Cadangan (Sekilas) #
Ada satu varian khusus yang jarang dipakai namun patut dikenal: git remote set-url --add --push <nama> <url> mendaftarkan alamat khusus untuk arah push. Begitu satu URL push terdaftar, push tidak lagi memakai alamat fetch:
git remote set-url --add --push origin ../pusat-cadangan.git
git remote -vOutput yang Dihasilkan:
origin ../gudang-baru.git (fetch)
origin ../pusat-cadangan.git (push)Alamat ../pusat-cadangan.git kini menjadi tujuan push, sementara ../gudang-baru.git tetap menjadi sumber fetch. Menambahkan satu URL push lagi membuat setiap git push mengirim ke dua tujuan sekaligus — pola yang dipakai tim yang ingin mirror otomatis:
git remote set-url --add --push origin ../gudang-baru.git
git remote -vOutput yang Dihasilkan:
origin ../gudang-baru.git (fetch)
origin ../pusat-cadangan.git (push)
origin ../gudang-baru.git (push)Daftar URL push dirapikan kembali dengan --delete --push; menghapus satu dari dua alamat menyisakan satu:
git remote set-url --delete --push origin ../pusat-cadangan.git
git remote -vOutput yang Dihasilkan:
origin ../gudang-baru.git (fetch)
origin ../gudang-baru.git (push)Dan bila satu-satunya URL push pun dihapus, perilaku semula kembali: push memakai alamat fetch sebagaimana tampilan awal kita tadi:
git remote set-url --delete --push origin ../gudang-baru.git
git remote -vOutput yang Dihasilkan:
origin ../gudang-baru.git (fetch)
origin ../gudang-baru.git (push)Seluruh bentuk set-url ini terdokumentasi di dokumentasi git remote
. Buku alamat kini mampu menampung segala pergantian alamat — tinggal satu pertanyaan besar yang belum terjawab: setelah terhubung, bagaimana persisnya perubahan berpindah dari remote ke salinan kita tanpa menyentuh branch lokal? Itu pekerjaan git fetch, chapter inti berikutnya.