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:
# pindah ke branch fitur-login
git switch fitur-loginSwitched to branch 'fitur-login'# buat branch baru DAN langsung pindah
git switch -c fitur-pembayaranSwitched 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:
# pindah branch
git checkout fitur-login
# buat branch baru dan langsung pindah
git checkout -b fitur-pembayaranFungsinya 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.
# BAHAYA: membuang semua perubahan yang belum di-commit di file ini
git checkout -- index.htmlPerintah 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:
# cara modern mengembalikan file (pengganti checkout -- <file>)
git restore index.htmlAturan praktis
| Kebutuhan | Perintah |
|---|---|
| Pindah branch | git switch nama-branch |
| Buat + pindah branch baru | git switch -c nama-branch |
| Kembalikan file yang belum di-commit | git restore nama-file |
Ketemu checkout di tutorial lama | pahami, tapi pakai switch untuk kerjaanmu |
Pindah branch dengan perubahan belum selesai
git switch mainKadang 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 dengangit 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.