Tiga perintah ini adalah cara Git menyinkronkan data antara repositori lokal dan remote. Memahami perbedaannya sangat penting untuk kolaborasi tim.
Mengirim commit dari repositori lokal ke remote:
# Push branch aktif ke remote (setelah -u diset)
git push
# Push branch tertentu ke remote
git push origin main
# Push dan set upstream (pertama kali push branch baru)
git push -u origin feature/navbar
# -u = --set-upstream: menghubungkan branch lokal ke remote
# Setelah ini, cukup ketik 'git push' saja
# Push semua branch sekaligus
git push --all origin
# Push tags ke remote
git push origin --tags
Apa yang terjadi di balik layar:
Lokal: A ← B ← C ← D (main)
↓ git push
Remote: A ← B ← C ← D (main)
Mengunduh perubahan dari remote tanpa menggabungkan ke working tree. Git hanya memperbarui informasi tentang kondisi remote:
# Fetch dari remote default (origin)
git fetch
# Fetch dari remote tertentu
git fetch origin
# Fetch semua remote
git fetch --all
Setelah fetch, perubahan ada di origin/main (remote tracking branch) tapi belum di main (branch lokal):
# Lihat perbedaan antara lokal dan remote setelah fetch
git log main..origin/main
git diff main origin/main
# Baru gabungkan manual jika sudah siap
git merge origin/main
git pull adalah kombinasi git fetch + git merge dalam satu perintah:
# Pull dari remote dan merge ke branch aktif
git pull
# Pull dari remote dan branch tertentu
git pull origin main
# Pull dengan rebase alih-alih merge
git pull --rebase
git pull -r
git pull = git fetch + git merge
Remote: A ← B ← C ← D ← E
Lokal: A ← B ← C (belum ada D dan E)
Setelah git pull:
Lokal: A ← B ← C ← D ← E
git fetch:
✓ Aman — tidak mengubah working tree
✓ Bisa cek perubahan dulu sebelum merge
✓ Cocok jika ingin kontrol penuh
✗ Perlu merge manual setelahnya
git pull:
✓ Praktis — satu perintah selesai
✗ Langsung merge tanpa preview
✗ Bisa mengejutkan jika ada konflik
Rekomendasi: gunakan git fetch lalu git log untuk cek perubahan, baru git merge jika aman.
# Pagi: ambil perubahan terbaru dari tim
git fetch origin
git log main..origin/main # lihat apa yang berubah
git pull # gabungkan
# Kerjakan tugas
git switch -c feature/fitur-baru
# ... edit, add, commit ...
# Sebelum push, ambil perubahan terbaru
git fetch origin
git rebase origin/main # taruh commit kita di atas yang terbaru
# Push
git push -u origin feature/fitur-baru
Jika push ditolak karena remote lebih maju:
git push origin main
# Error: ! [rejected] main -> main (fetch first)
# hint: Updates were rejected because the remote contains work
# hint: that you do not have locally.
# Solusi: pull dulu, selesaikan konflik, baru push
git pull
# ... selesaikan konflik jika ada ...
git push origin main
# Lihat hubungan branch lokal dengan remote
git branch -vv
# Output:
# * main a3f5c2b [origin/main] Tambah halaman kontak
# feature 7b2e9f1 [origin/feature] Tambah fitur baru
# Set upstream branch secara manual
git branch --set-upstream-to=origin/main main
💡 Tips: Selalu
git pullataugit fetchterlebih dahulu sebelum mulai bekerja setiap hari. Ini memastikan kamu bekerja di atas kode yang paling baru dan meminimalkan konflik saat push nanti. Seperti membaca email pagi hari sebelum membalas! 📬
Kursus
Git Dasar
Kategori
Repository Remote
Durasi Pelajaran
20 menit