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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
git branch | Mendaftar 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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
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 --abort | Membatalkan merge yang macet konflik dan mengembalikan keadaan pra-merge (Membatalkan Merge ). | git merge --abort |
git log --graph --oneline | Membaca 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
).
| Perintah | Fungsi | Contoh |
|---|---|---|
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 --continue | Melanjutkan rebase yang berhenti karena konflik setelah perbaikan di-stage (Abort dan Continue Rebase ). | git rebase --continue |
git rebase --abort | Membatalkan 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 mergetool | Membuka 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 status | Perintah 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 menyunting | git checkout --ours <berkas> (sisi branch aktif) atau git checkout --theirs <berkas> (sisi seberang), lalu git add |
| Ingin berhenti dari merge sebelum commit | git merge --abort |
| Merge sudah ter-commit, belum dibagikan | git reset --hard ORIG_HEAD |
| Konflik terlalu banyak untuk disunting manual | git mergetool |
| Rebase berhenti karena konflik | Selesaikan 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 .