Branch adalah cara Git memungkinkan pekerjaan paralel, dan hampir semua kesalahan branch bermula dari dua hal: salah arah merge atau lupa sedang berdiri di branch mana. Chapter ini merangkum keluarga perintah branch menjadi contekan bertabel — kolom perintah menunjukkan bentuknya, kolom fungsi merangkum hasilnya satu kalimat, kolom contoh siap disalin. Tabel terbagi empat kelompok: membuat dan berpindah, menggabungkan, memperbaiki riwayat, serta tabel khusus konflik yang memetakan status git status langsung ke perintah penyelesaiannya. Sebelum menekan Enter pada perintah mana pun di halaman ini, kebiasaan satu detik yang selalu membayar: git branch --show-current untuk memastikan posisi berdiri (Membuat Branch ).

Membuat dan Berpindah #

Git 2.23 memecah tugas lama git checkout menjadi dua perintah fokus: git switch untuk urusan branch, git restore untuk urusan isi berkas. Materi kursus ini mengajarkan pasangan modern sebagai cara utama; bentuk checkout tetap dicantumkan karena masih beredar di skrip dan dokumentasi lama (git switch , git checkout ).

PerintahFungsiContoh
git branchMendaftar branch lokal; tanda * menandai branch aktif (Melihat Branch ).git branch
git branch <nama>Membuat branch baru pada commit saat ini tanpa berpindah.git branch fitur-a
git switch <nama>Berpindah ke branch yang sudah ada.git switch main
git switch -c <nama>Membuat branch baru dan langsung berpindah ke sana.git switch -c fitur-arsip
git switch -c <nama> <titik>Membuat branch baru yang berdiri pada commit atau branch lain.git switch -c fitur-lama HEAD~1
git switch -Kembali ke branch yang aktif sebelumnya.git switch -
git checkout <nama>Bentuk warisan untuk berpindah branch.git checkout main
git checkout -b <nama>Bentuk warisan untuk membuat dan berpindah sekaligus.git checkout -b fitur-rapat

Menggabungkan #

Aturan arah yang wajib diingat sebelum tabel: pekerjaan dari <branch> dibawa masuk ke branch tempat kita berdiri. Berdiri di main lalu git merge fitur berarti fitur masuk ke main — bukan sebaliknya (git merge ).

PerintahFungsiContoh
git merge <branch>Menggabungkan pekerjaan <branch> ke branch aktif.git merge fitur-kontak
git merge <branch> -m "<pesan>"Merge dengan pesan penggabungan yang kita tentukan sendiri.git merge fitur-kontak -m "Gabungkan fitur kontak"
git merge --no-ff <branch>Memaksa lahirnya commit merge walau fast-forward dimungkinkan (Fast-Forward Merge ).git merge --no-ff fitur-keranjang
git merge --ff-only <branch>Hanya mau fast-forward; Git menolak bila riwayat telah menyimpang.git merge --ff-only fitur-galeri
git merge --squash <branch>Menyerap seluruh perubahan branch ke staging tanpa membuat commit merge.git merge --squash fitur-keranjang
git merge --abortMembatalkan merge yang macet konflik dan mengembalikan keadaan pra-merge (Membatalkan Merge ).git merge --abort
git log --graph --onelineMembaca bentuk penggabungan riwayat sebagai graf (Graph History ).git log --graph --oneline --decorate --all

Memperbaiki Riwayat #

Kelompok ini menulis ulang atau menambah riwayat — dua operasi berbeda yang sering tertukar. rebase dan cherry-pick memindahkan commit, revert justru menambah commit pembalik, sementara rename dan hapus hanya menyentuh penunjuk nama (git rebase , Cherry-Pick , Revert ).

PerintahFungsiContoh
git cherry-pick <hash>Menerapkan satu commit pilihan pada branch aktif sebagai commit baru ber-hash beda.git cherry-pick 01e14e8
git rebase <branch>Menyusun ulang commit branch aktif di atas ujung <branch>.git rebase main
git rebase --continueMelanjutkan rebase yang berhenti karena konflik setelah perbaikan di-stage (Abort dan Continue Rebase ).git rebase --continue
git rebase --abortMembatalkan rebase yang sedang berjalan dan kembali persis ke keadaan pra-rebase.git rebase --abort
git revert <hash>Membuat commit baru yang membalik perubahan commit sasaran.git revert ca0268f
git branch -m <baru>Mengganti nama branch aktif (Rename Branch ).git branch -m fix-tema-gelap
git branch -m <lama> <baru>Mengganti nama branch lain tanpa berpindah.git branch -m fitur-tampilan fitur-tema-gelap
git branch -d <nama>Menghapus branch yang isinya sudah tergabung (Menghapus Branch ).git branch -d fitur-keranjang
git branch -D <nama>Menghapus branch apa pun, termasuk yang belum tergabung.git branch -D fitur-eksperimen
git mergetoolMembuka aplikasi penggabungan tiga arah untuk konflik (Merge Tools ).git mergetool

Tabel Konflik Cepat #

Saat merge macet, git status adalah peta dan tabel berikut adalah jalannya — setiap status langsung dipetakan ke perintah penyelesaian yang dibahas tuntas di Menyelesaikan Merge Conflicts .

Keadaan pada git statusPerintah penyelesaian
both modified: <berkas>Sunting blok <<<<<<< sampai >>>>>>>, lalu git add <berkas>
deleted by them: <berkas>git add <berkas> untuk mempertahankan versi kita, atau git rm <berkas> untuk menerima penghapusan
Butuh satu sisi utuh tanpa menyuntinggit checkout --ours <berkas> (sisi branch aktif) atau git checkout --theirs <berkas> (sisi seberang), lalu git add
Ingin berhenti dari merge sebelum commitgit merge --abort
Merge sudah ter-commit, belum dibagikangit reset --hard ORIG_HEAD
Konflik terlalu banyak untuk disunting manualgit mergetool
Rebase berhenti karena konflikSelesaikan konflik, git add <berkas>, lalu git rebase --continue — atau git rebase --abort

Seluruh gerakan di atas terjadi di dalam satu repository di mesin kita. Begitu ada titik temu bersama di server, keluarga perintah berikutnya mengurus pertukaran pekerjaan keluar-masuk — dirangkum di Perintah Remote .