Branch Management — Git

Setelah branch di-merge, biasanya branch tersebut tidak dibutuhkan lagi dan bisa dihapus. Hapus branch: $ git branch -d fitur-selesai Deleted branch…

Branch management artinya merawat daftar branch: melihat branch apa saja yang ada, mengganti nama yang salah ketik, dan menghapus yang sudah selesai dipakai. Ingat lagi dari materi Branching: branch cuma label yang menunjuk ke satu commit. Mirip pembatas buku. Mencabut pembatas gak merobek halamannya, dan halaman yang sudah masuk ke bab utama tetap bisa dibaca. Yang bahaya cuma satu: mencabut satu-satunya pembatas dari halaman yang belum masuk ke mana-mana, karena halaman itu jadi susah dicari lagi.

🧪 Tebakan cepat: branch temp sudah di-merge ke main, lalu kamu hapus. Commit "temp work" yang dibuat di temp ikut hilang gak? Tebak dulu, jawabannya ada di bagian "Menghapus branch: -d dan -D".

Melihat daftar branch

Contohnya repo dengan tiga branch: main, logn (salah ketik, harusnya login, dan sudah di-merge), dan eksperimen (belum di-merge).

$ git branch
  eksperimen
  logn
* main
$ git branch -a
* main
  remotes/origin/main

Mengganti nama: git branch -m

Salah ketik nama branch? Ganti namanya, gak perlu bikin ulang.

$ git branch -m logn login
$ git branch
  eksperimen
  login
* main

Menghapus branch: -d dan -D

Setelah di-merge, branch fitur biasanya gak dibutuhkan lagi. Hapus dengan -d (kependekan dari --delete):

$ git branch -d login
Deleted branch login (was 3e1a9c2).

Commit di login tetap ada, karena sudah jadi bagian dari main. Yang hilang cuma labelnya. Itu jawaban tebakannya: commit "temp work" juga tetap ada di main, karena main sudah menunjuk ke sana.

-d itu hati-hati. Branch yang punya commit yang belum masuk ke branch tempat kamu berada akan ditolak:

$ git branch -d eksperimen
error: the branch 'eksperimen' is not fully merged
hint: If you are sure you want to delete it, run 'git branch -D eksperimen'

Alur feature branch dari awal sampai bersih

Ini alur latihannya: bikin branch, kerja di sana, merge, lalu bersihkan. Pola ini disebut feature branch workflow, dan dipakai hampir semua tim.

$ git init
$ git add .
$ git commit -m "initial"
$ git switch -c temp               # sama dengan: git checkout -b temp
Switched to a new branch 'temp'
$ echo "kerja sementara" >> main.js
$ git add .
$ git commit -m "temp work"
$ git switch main                  # sama dengan: git checkout main
Switched to branch 'main'
$ git merge temp
Updating 35bed05..4d935e1
Fast-forward
 main.js | 1 +
 1 file changed, 1 insertion(+)
$ git branch -d temp
Deleted branch temp (was 4d935e1).
Sesudah main temp HEAD
commit "initial" initial belum ada main
git switch -c temp initial initial temp
commit "temp work" initial temp work temp
git switch main, git merge temp temp work temp work main
git branch -d temp temp work dihapus main

💡 Mencari branch yang aman dihapus

$ git branch --merged
  login
* main

git branch --merged menampilkan branch yang semua commit-nya sudah ada di branch tempat kamu berada. Semua yang muncul aman dihapus dengan -d. Kebalikannya, git branch --no-merged, menampilkan yang masih punya commit sendiri.

⚠️ Jebakan yang sering ketemu

TL;DR: Branch cuma label, jadi merawatnya murah. git branch menampilkan branch lokal (* = posisimu), git branch -a ikut menampilkan branch remote. git branch -m lama baru mengganti nama. git branch -d nama menghapus branch yang sudah di-merge, dan menolak dengan "not fully merged" kalau belum. git branch -D nama menghapus paksa. Commit yang sudah di-merge tetap ada setelah branch-nya dihapus. Branch yang sedang dipakai gak bisa dihapus, jadi pindah dulu ke main. Alurnya: git switch -c fitur, commit, git switch main, git merge fitur, git branch -d fitur.

Yang akan kamu pelajari