Remote membuat pekerjaan dari proyek pribadi menjadi milik bersama, dan hampir semua kebingungan remote bermuara pada satu pertanyaan: apa yang sebenarnya ada di sisi sana. Chapter ini merangkum keluarga perintah remote menjadi contekan bertabel dengan tiga kolom — perintah, fungsi satu kalimat, contoh siap salin — terbagi empat kelompok: mengelola buku alamat, menarik perkembangan, mendorong pekerjaan, dan memeriksa ikatan upstream. Konsep dasarnya perlu diingat sekali sebelum membaca tabel: fetch hanya memperbarui salinan penunjuk origin/* tanpa menyentuh branch lokal, sedangkan pull dan push mengubah branch lokal kita langsung (Konsep Remote ).

Buku Alamat Remote #

Setiap clone menyimpan daftar nama panggilan remote beserta alamatnya; origin hanyalah konvensi nama, bukan kata kunci Git (git remote ).

PerintahFungsiContoh
git remoteMendaftar nama-nama remote yang terdaftar di repository.git remote
git remote -vMendaftar remote beserta alamat fetch dan push-nya.git remote -v
git remote add <nama> <alamat>Mendaftarkan remote baru pada repository yang sudah berjalan (Menambahkan Remote ).git remote add origin ../pusat.git
git remote set-url <nama> <alamat>Mengganti alamat remote tanpa membangun ulang riwayat (Mengganti Remote URL ).git remote set-url origin ../gudang-baru.git
git remote show <nama>Menanyakan cabang, ikatan tracking, dan kesehatan sebuah remote.git remote show origin
git ls-remote <remote>Membaca daftar ref remote dari luar tanpa menyentuh repository lokal.git ls-remote origin

Menarik Perkembangan #

Kelompok ini menjawab “apa yang baru di sisi sana”. fetch dan pull adalah dua pintu yang sering dianggap sama padahal berbeda: fetch hanya mengunduh, pull mengunduh lalu menggabungkan (git fetch , git pull ).

PerintahFungsiContoh
git fetchMengunduh perkembangan remote ke salinan penunjuk origin/* tanpa menyentuh branch lokal.git fetch
git fetch originFetch eksplisit dari remote bernama origin.git fetch origin
git fetch --pruneSekalian menyapu penunjuk origin/* yang cabangnya sudah dihapus di remote (Remote Branch Management ).git fetch --prune
git fetch --allMengambil perkembangan dari seluruh remote terdaftar sekaligus.git fetch --all
git pullFetch lalu menggabungkan perkembangan upstream ke branch aktif.git pull
git pull --rebaseFetch lalu menyusun ulang commit lokal di atas perkembangan remote.git pull --rebase
git pull --ff-onlyHanya mau fast-forward; Git berhenti dan menolak menebak bila riwayat divergen.git pull --ff-only

Satu perilaku Git 2.47 yang menenangkan: saat riwayat lokal dan remote menyimpang, git pull polos menolak menebak dengan pesan fatal: Need to specify how to reconcile divergent branches — tidak pernah ada penggabungan diam-diam yang tidak kita pilih. Bentuk polosnya juga bergantung pada konfigurasi pull.rebase di mesin masing-masing, dan sebagian lingkungan menyetelnya secara global. Karena itu kebiasaan yang paling aman di proyek orang lain adalah menyatakan niat eksplisit seperti dua baris terakhir tabel, atau menjalankan git fetch dulu lalu memeriksa origin/main sebelum menggabungkan sendiri.

Mendorong Pekerjaan #

Push mengirim commit dari repository lokal ke remote, dan tiga bentuk berikutnya menjawab tiga situasi berbeda: push polos untuk branch ber-ikatan, -u untuk pemasangan ikatan pertama, dan --force-with-lease untuk penulisan ulang riwayat yang sudah dibagikan (git push ).

PerintahFungsiContoh
git pushMengirim branch aktif ke upstream yang sudah terpasang.git push
git push origin <branch>Mengirim branch tertentu secara eksplisit.git push origin fitur-pengiriman
git push -u origin <branch>Push sekaligus memasang ikatan upstream untuk branch baru (Upstream Branch ).git push -u origin main
git push --force-with-leasePush paksa yang menolak menimpa pembaruan yang belum kita lihat — lebih aman daripada --force (Non-Fast-Forward Push ).git push --force-with-lease
git push origin --delete <branch>Menghapus branch di sisi remote (Menghapus Remote Branch ).git push origin --delete fitur

Memeriksa Ikatan Upstream #

Salinan penunjuk origin/* dan ikatan upstream adalah bahan bakar seluruh kelompok sebelumnya. Tiga perintah ini membacanya (Tracking Branch ).

PerintahFungsiContoh
git branch -vvMendaftar branch lokal beserta pasangan upstream dan posinya.git branch -vv
git branch -rMendaftar salinan penunjuk branch remote.git branch -r
git rev-parse --abbrev-ref <branch>@{u}Menanyakan nama upstream sebuah branch.git rev-parse --abbrev-ref main@{u}

Satu kekhawatiran menyertai seluruh tabel ini: begitu commit sampai ke remote, commit itu menjadi milik bersama dan kesalahan tidak lagi urusan satu orang. Cara membatalkan dan menyelamatkan pekerjaan pada tiap tingkat kecelakaan dirangkum di Perintah Undo dan Recovery .