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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git remote | Mendaftar nama-nama remote yang terdaftar di repository. | git remote |
git remote -v | Mendaftar 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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git fetch | Mengunduh perkembangan remote ke salinan penunjuk origin/* tanpa menyentuh branch lokal. | git fetch |
git fetch origin | Fetch eksplisit dari remote bernama origin. | git fetch origin |
git fetch --prune | Sekalian menyapu penunjuk origin/* yang cabangnya sudah dihapus di remote (Remote Branch Management
). | git fetch --prune |
git fetch --all | Mengambil perkembangan dari seluruh remote terdaftar sekaligus. | git fetch --all |
git pull | Fetch lalu menggabungkan perkembangan upstream ke branch aktif. | git pull |
git pull --rebase | Fetch lalu menyusun ulang commit lokal di atas perkembangan remote. | git pull --rebase |
git pull --ff-only | Hanya 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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git push | Mengirim 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-lease | Push 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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git branch -vv | Mendaftar branch lokal beserta pasangan upstream dan posinya. | git branch -vv |
git branch -r | Mendaftar 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 .