Membuat dan berpindah branch

Membuat branch baru dan berpindah posisi kerja dengan git branch serta git switch.

Daftar isi

Branch yang sudah dipahami modelnya kini dapat dioperasikan. Topik ini membahas siklus lengkapnya: membuat branch dengan git branch, berpindah posisi kerja dengan git switch, membuat branch sekaligus berpindah dengan git switch -c, dan menghapus branch yang tugasnya selesai. Perintah lama git checkout yang memikul keduanya juga diperkenalkan agar keluaran dokumentasi lama tetap terbaca.

Membuat branch tanpa berpindah#

Perintah git branch nama membuat penunjuk baru tanpa mengubah posisi kerja. Siapkan repository latihan dengan satu commit dasar, lalu buat branch pertama.

bash
# tanggal commit ditetapkan agar keluaran contoh dapat direproduksi secara persis
export GIT_AUTHOR_DATE="2026-11-01T09:00:00+07:00"
export GIT_COMMITTER_DATE="2026-11-01T09:00:00+07:00"
bash
rm -rf /tmp/lab-switch
mkdir /tmp/lab-switch
cd /tmp/lab-switch
git init -b main
git config user.name "Budi"
git config user.email "[email protected]"
printf "Menu utama.\n" > app.txt
git add app.txt
git commit -m "Menu utama"
git branch fitur-sapa
git branch
text Keluaran
Initialized empty Git repository in /tmp/lab-switch/.git/
[main (root-commit) f32eeb1] Menu utama
 1 file changed, 1 insertion(+)
 create mode 100644 app.txt
  fitur-sapa
* main

Daftar git branch menampilkan kedua branch dengan tanda bintang pada yang aktif. Pada titik ini kedua branch masih menunjuk commit yang sama, dan pekerjaan berlanjut di main apabila tidak ada perpindahan dilakukan.

Berpindah dengan git switch#

Perintah git switch memindahkan HEAD ke branch tujuan dan menyesuaikan isi working directory. Pindah ke fitur-sapa, buat commit di sana, lalu kembali ke main dan amati perbedaannya.

bash
git switch fitur-sapa
printf "Menu utama.\nSapa pengguna saat masuk.\n" > app.txt
git commit -am "Tambah sapaan saat masuk"
git switch main
ls
text Keluaran
Switched to branch 'fitur-sapa'
[fitur-sapa a034bca] Tambah sapaan saat masuk
 1 file changed, 1 insertion(+)
Switched to branch 'main'
app.txt

Isi app.txt pada main tidak memuat sapaan baru, karena commit itu dibuat di atas fitur-sapa. Kedua branch kini menunjuk commit yang berbeda, dan berpindah branch benar-benar mengganti keadaan berkas yang terlihat. Perintah git log --oneline --all menampilkan kedua jalur tersebut sekaligus, sedangkan git log biasa hanya menampilkan riwayat branch aktif.

bash
git log --oneline --all
text Keluaran
a034bca Tambah sapaan saat masuk
f32eeb1 Menu utama

Membuat sekaligus berpindah#

Kombinasi git branch lalu git switch begitu sering dipakai sehingga tersedia bentuk ringkasnya, yaitu git switch -c (create).

bash
git switch -c fitur-cepat
git switch main
text Keluaran
Switched to a new branch 'fitur-cepat'
Switched to branch 'main'

Branch fitur-cepat dibuat dari posisi saat itu, yaitu commit terakhir main, dan posisi kerja langsung berpindah ke sana. Perintah lama yang setara adalah git checkout -b fitur-cepat, yang masih didukung dan masih banyak muncul pada dokumentasi lama. Perbedaan konsepnya penting untuk dibaca ulang: git switch hanya berpindah atau membuat branch, sedangkan git checkout juga dapat menarik isi berkas dari commit mana pun, sehingga kesalahan pengetikan pada checkout dapat menimpa berkas kerja.

Dua bentuk ringkas lain yang sering memangkas pengetikan adalah git switch - untuk kembali ke branch yang dikunjungi sebelumnya, dan git switch -c nama HEAD~1 untuk membuat branch yang titik awalnya bukan commit terakhir, melainkan commit lama mana pun. Keduanya memakai mekanisme penunjuk yang sama, hanya argumennya yang berbeda.

Berpindah dengan perubahan yang menggantung#

Pertanyaan yang muncul segera setelah siklus perpindahan dipraktikkan adalah apa yang terjadi pada perubahan yang belum di-commit. Git memeriksa dulu apakah berkas yang berubah sama-sama disentuh oleh perpindahan. Apabila tidak, perubahan yang menggantung ikut terbawa ke branch tujuan tanpa di-commit, dan git status tetap menampilkannya di sana.

Apabila berkas yang sama berubah di kedua sisi, Git menolak perpindahan dan melindungi pekerjaan.

bash
printf "Menu utama.\nCatatan samping.\n" > app.txt
git switch fitur-sapa
text Keluaran
error: Your local changes to the following files would be overwritten by checkout:
	app.txt
Please commit your changes or stash them before you switch branches.
Aborting

Pesan error menyebut berkas yang berpotensi tertimpa dan menawarkan dua jalan, yaitu men-commit perubahan atau menyimpannya sementara melalui git stash. Pada titik ini keputusan yang sehat biasanya adalah commit, karena commit kecil murah dan menjadi titik pemulihan, sedangkan stash menunggu pekerjaan yang memang belum siap tampil di riwayat. Perpindahan yang ditolak tidak mengubah apa pun, sehingga aman dicoba untuk mengecek keadaan.

Menghapus branch#

Branch yang sudah digabungkan atau memang tidak jadi dilanjutkan dihapus dengan git branch -d. Git menolak menghapus branch yang belum tergabung, dan menolaknya itu merupakan pengaman yang berharga.

bash
git branch -d fitur-cepat
git branch -d fitur-sapa
text Keluaran
Deleted branch fitur-cepat (was f32eeb1).
error: the branch 'fitur-sapa' is not fully merged
hint: If you are sure you want to delete it, run 'git branch -D fitur-sapa'
hint: Disable this message with "git config advice.forceDeleteBranch false"

Pesan error menyatakan bahwa fitur-sapa memuat commit yang belum ada di branch lain, dan Git menawarkan opsi -D untuk memaksa penghapusan. Commit di atas fitur-sapa tidak langsung hilang saat branchnya dihapus, karena objek commit tetap tersimpan dan dapat ditemukan kembali melalui reflog, tetapi penunjuk bergeraknya sudah tidak ada sehingga pemulihannya memerlukan langkah sadar. Keputusan yang aman: hapus dengan -d setelah penggabungan, dan pakai -D hanya ketika membuang pekerjaan memang disengaja.

Ringkasan#

  • git branch nama membuat penunjuk baru tanpa berpindah, sedangkan git switch nama berpindah dan menyesuaikan working directory.
  • git switch -c membuat branch sekaligus berpindah, dan git checkout -b adalah bentuk lamanya.
  • Commit di atas sebuah branch hanya terlihat oleh branch tersebut sampai penggabungan dilakukan.
  • git branch -d menolak menghapus branch yang belum tergabung, dan -D mengabaikan pengaman itu.

Referensi#