Pelajari cara mengintegrasikan perubahan dari satu branch ke branch lain (biasanya ke branch utama seperti 'main') menggunakan perintah `git merge`, dan pahami konsep dasar penyelesaian merge conflict.
"Reuni" Kode: Nyatuin Perubahan dari Berbagai Branch Pake git merge!
Udah jago bikin branch baru (git branch nama) dan lompat-lompat antar branch (git switch nama)? Keren! Sekarang, gimana caranya kalau kerjaanmu di satu branch (misalnya, branch fitur-keren) udah selesai dan mau kamu "gabungin" balik ke branch utama (misalnya, branch main)?
Di sinilah perintah git merge berperan! git merge dipake buat ngambil perubahan dari satu branch dan ngintegrasiinnya ke branch lain. Ini adalah cara paling umum buat nyatuin hasil kerja paralel dari berbagai jalur pengembangan.
Alur Kerja Umum Menggunakan merge
Biasanya, alur kerjanya kayak gini:
Kamu lagi ada di branch utama (misal, main) dan branch ini udah stabil.
Kamu mau ngerjain fitur baru atau benerin bug. Kamu bikin branch baru dari main (misal, git switch -c fitur-login).
Kamu kerja dan bikin commit-commit di branch fitur-login itu sampe fiturnya selesai atau bug-nya beres.
Selama kamu kerja di fitur-login, branch main mungkin aja juga dapet update dari kerjaan orang lain (kalau kerja tim) atau dari perbaikan bug lain. Jadi, ada baiknya kamu update dulu branch main-mu (nanti kita bahas git pull).
Setelah fitur-login siap digabung dan main udah paling update, kamu:
Pindah (checkout/switch) balik ke branch main (branch tujuan merge).
Jalanin perintah git merge fitur-login buat ngegabungin semua commit dari fitur-login ke main.
Cara Pake git merge
Sintaks Dasar:
bash
# 1. Pastikan kamu lagi ada di branch PENERIMA (misal, main)git switch main# 2. Jalanin perintah merge dengan nama branch SUMBERgit merge <nama_branch_sumber_yang_mau_digabung>
Contoh:
bash
git merge fitur-login# Ini bakal ngegabungin semua commit dari branch 'fitur-login' ke branch 'main' (tempat kamu lagi berada).
Apa yang Terjadi Pas git merge?
Git bakal nyoba ngegabungin histori dari dua branch itu. Ada dua skenario utama:
Fast-forward Merge (Gabung Cepat Maju):
Ini terjadi kalau branch main (tujuan) gak punya commit baru sejak branch fitur-login (sumber) dibikin. Jadi, histori fitur-login itu cuma "lanjutan lurus" dari main.
Dalam kasus ini, Git cuma tinggal mindahin penunjuk (pointer) main maju ke commit terakhirnya fitur-login. Gak ada commit merge baru yang dibikin. Gampang dan bersih!
(Di sini, main awalnya di C2, fitur-login di C4. Setelah merge, main langsung lompat ke C4).
Three-way Merge (Gabung Tiga Arah) / Recursive Merge:
Ini terjadi kalau kedua branch (misal, main dan fitur-login) punya commit baru masing-masing sejak mereka "berpisah" (sejak fitur-login dibikin dari main). Jadi, histori mereka udah beda jalur.
Git bakal nyari "nenek moyang bersama" terakhir dari dua branch itu, terus ngebandingin perubahan dari kedua branch ke nenek moyang itu, dan nyoba ngegabunginnya.
Kalau penggabungannya berhasil tanpa masalah, Git bakal otomatis bikin satu COMMIT BARU di branch main. Commit baru ini disebut "merge commit". Merge commit ini punya dua parent: commit terakhir dari main (sebelum merge) dan commit terakhir dari fitur-login.
Pesan commit default buat merge commit biasanya udah dibikinin Git (misal, "Merge branch 'fitur-login' into main"), tapi kamu bisa ngeditnya kalau mau.
(Di sini, main punya commit C5, fitur-login punya C4. Keduanya berasal dari C2. Hasil merge adalah commit baru M1 di main yang punya parent C4 dan C5).
Merge Conflicts: "Git Bingung, Nih!"
Kadang, pas git merge, Git gak bisa otomatis mutusin gimana cara ngegabungin perubahan dari dua branch. Ini terjadi kalau kedua branch ngubah baris kode yang sama di file yang sama dengan cara yang beda, atau kalau satu branch ngehapus file yang diubah sama branch lain. Nah, inilah yang disebut Merge Conflict (Konflik Penggabungan).
Apa yang Terjadi Pas Ada Conflict?
Proses git merge bakal berhenti di tengah jalan.
Git bakal ngasih tau kamu file mana aja yang konflik.
Di dalem file yang konflik itu, Git bakal nambahin penanda khusus buat nunjukin bagian mana yang beda dari masing-masing branch:
<<<<<<< HEAD (Perubahan dari branch-mu saat ini, misal main)
Ini adalah kode dari branch main.
=======
Ini adalah kode dari branch fitur-login yang mau digabung.
>>>>>>> fitur-login (Nama branch sumber)
Tugasmu adalah nyelesaiin konflik ini manual!
Buka file yang konflik di teks editor (VS Code punya alat bantu yang bagus buat ini).
Pilihlah versi kode yang mau kamu pake: Apakah versi dari HEAD (branch-mu saat ini)? Atau versi dari branch yang mau di-merge? Atau mungkin gabungan keduanya? Atau bahkan kode yang úplně baru?
Hapus semua penanda konflik (<<<<<<<, =======, >>>>>>>) dan pastiin kodenya jadi bener sesuai yang kamu mau.
Simpen file-nya.
git add <file_yang_udah_diselesaiin_konfliknya>: Tandain kalau konflik di file itu udah beres.
Kalau semua file yang konflik udah di-add, lanjutin proses merge dengan bikin commit merge:
bash
git commit# (Gak perlu -m, Git biasanya udah nyiapin pesan default "Merge branch ...". # Kamu bisa edit kalau mau.)
Atau, kalau proses merge tadi otomatis berhenti dan kamu udah selesaiin semua konflik, kadang cukup git merge --continue.
Menyelesaikan merge conflict itu skill penting. Awalnya mungkin agak nakutin, tapi lama-lama bakal terbiasa. VS Code punya fitur "Resolve in Merge Editor" yang bisa ngebantu banget secara visual.
Setelah Merge Berhasil
Branch sumber (misal, fitur-login) masih tetep ada.
Kalau branch fitur itu udah gak dipake lagi dan semua perubahannya udah aman masuk ke main, kamu bisa ngehapus branch fitur itu biar repositorimu rapi:
bash
Selalu git pull atau git fetch dan git merge origin/main (atau git rebase origin/main - advance) di branch main-mu dulu sebelum nge-merge branch fitur ke main. Biar main-mu selalu paling update.
Sering-sering nge-merge branch fitur ke branch development utama (atau sebaliknya), jangan nunggu perubahannya jadi gede banget. Makin kecil perubahannya, makin gampang kalau ada konflik.
Komunikasi sama tim kalau kerja bareng, biar tau siapa lagi ngerjain apa dan ngurangin potensi konflik.
git merge adalah alat vital buat nyatuin berbagai jalur pengembangan di proyekmu. Ngertiin cara kerjanya, terutama beda fast-forward sama three-way merge, dan gimana cara nanganin merge conflict, bakal bikin kamu jadi pengguna Git yang jauh lebih efektif.
Branching dan merging ini adalah jantung dari kolaborasi pake Git. Dengan ini, kamu bisa kerja bareng tim dengan lebih teratur dan aman!
Kuis Menggabungkan Branch Git (git merge)
Pertanyaan 1 dari 5
Perintah Git apa yang digunakan untuk mengintegrasikan perubahan dari sebuah branch (misalnya, `fitur-A`) ke dalam branch yang sedang aktif saat ini (misalnya, `main`)?