gitbranchcheckoutswitchMenengah3 mnt baca

Pindah Branch dengan Checkout dan Switch

Cara berpindah antar branch, beda git checkout vs git switch, dan kapan memakai masing-masing.

Pindah branch = ganti isi working directory

Saat kamu pindah branch, Git mengubah file-file di folder kerjamu agar sesuai dengan snapshot commit yang ditunjuk branch tujuan. Perubahan yang belum di-commit akan ikut terbawa (atau ditolak kalau berpotensi konflik, dibahas di modul stash).

git switch: cara modern yang disarankan

git switch diperkenalkan di Git 2.23 khusus untuk urusan pindah branch, supaya lebih jelas dan aman:

bash
# pindah ke branch fitur-login
git switch fitur-login
bash
Switched to branch 'fitur-login'
bash
# buat branch baru DAN langsung pindah
git switch -c fitur-pembayaran
bash
Switched to a new branch 'fitur-pembayaran'

Kapan dipakai? Ini yang sebaiknya kamu pakai sehari-hari untuk pindah branch. Perintahnya hanya bisa untuk branch, jadi tidak ada risiko salah pakai.

git checkout: cara klasik yang serbaguna

Sebelum switch ada, semua dilakukan dengan checkout:

bash
# pindah branch
git checkout fitur-login

# buat branch baru dan langsung pindah
git checkout -b fitur-pembayaran

Fungsinya identik untuk pindah branch. Kamu akan sering melihat checkout di tutorial lama dan di proyek orang, jadi wajib paham walau untuk pemakaian sendiri switch lebih disarankan.

Perbedaan penting: checkout bisa menyentuh file

Inilah alasan switch dibuat. git checkout punya fungsi kedua: mengembalikan file ke versi commit terakhir.

bash
# BAHAYA: membuang semua perubahan yang belum di-commit di file ini
git checkout -- index.html

Perintah itu menghapus permanen perubahanmu di index.html yang belum di-commit. Tidak ada konfirmasi, tidak ada tempat sampah. Karena satu perintah punya dua makna yang sangat berbeda (pindah branch vs buang perubahan), pemula sering salah pakai.

git switch tidak punya fungsi berbahaya itu. Untuk mengembalikan file, Git modern menyediakan git restore:

bash
# cara modern mengembalikan file (pengganti checkout -- <file>)
git restore index.html

Aturan praktis

KebutuhanPerintah
Pindah branchgit switch nama-branch
Buat + pindah branch barugit switch -c nama-branch
Kembalikan file yang belum di-commitgit restore nama-file
Ketemu checkout di tutorial lamapahami, tapi pakai switch untuk kerjaanmu

Pindah branch dengan perubahan belum selesai

bash
git switch main

Kadang Git menolak dengan pesan error karena perubahanmu di branch sekarang akan tertimpa oleh versi di branch tujuan. Solusinya ada tiga: commit dulu perubahanmu, simpan sementara dengan git stash (modul tersendiri), atau buang perubahan dengan git restore. Jangan paksa dengan cara aneh, pilih salah satu dari tiga itu.

Catatan teknis: git checkout <hash-commit> memindahkanmu ke kondisi "detached HEAD", yaitu posisi tidak di branch mana pun. Ini berguna untuk melihat kondisi kode di masa lalu, tapi jangan membuat commit baru di sana karena commit itu tidak punya branch sebagai rumah dan mudah hilang. Kalau tidak sengaja masuk detached HEAD, kembali saja dengan git switch main.

Ringkasan

Untuk pindah branch, pakai git switch. Untuk buat-dan-pindah, git switch -c. Lupakan git checkout -- <file> yang berbahaya, ganti dengan git restore. Kebiasaan kecil ini menyelamatkanmu dari kehilangan kerjaan suatu hari nanti.