Menu
CoddyTech

Git Merge

Terakhir diperbarui

git merge membawa commit dari branch lain ke branch saat ini. Kalau branch saat ini belum menyimpang, Git melakukan fast-forward, cukup menggeser penunjuknya ke depan. Kalau kedua branch punya commit baru, Git membuat merge commit yang menyatukan kedua riwayat. Berbeda dengan rebase, merge mempertahankan riwayat kedua branch persis apa adanya.

Coba perintah-perintah ini di playground terminal: shell sungguhan di browsermu, tanpa perlu instalasi.

git merge menyatukan dua riwayat dengan sebuah merge commit; kedua branch tetap menyimpan commit aslinya.

Sintaks

PerintahFungsinya
git merge featureMerge feature ke branch saat ini
git merge --no-ff featureSelalu membuat merge commit
git merge --ff-only featureMerge hanya kalau bisa fast-forward
git merge --squash featureMenggabungkan commit branch itu menjadi satu
git merge --abortMembatalkan merge yang konflik

Fast-forward vs merge commit

SkenarioFast-forwardMerge commit (--no-ff)
Membuat commit baruTidakYa
Menyimpan jejak branchTidakYa
Terjadi saatBranch saat ini belum menyimpangKedua branch punya commit baru

Menyelesaikan konflik merge

Kalau kedua branch mengubah baris yang sama, Git berhenti sejenak.

LangkahPerintahHasil
1Edit file yang konflikPilih baris yang benar, hapus penandanya
2git add <file>Tandai konflik sudah selesai
3git commitMenyelesaikan merge

Pertanyaan seputar git merge

Bagaimana cara merge satu branch ke branch lain di Git?
Pindah ke branch tujuan merge (misalnya git switch main), lalu jalankan git merge feature. Git menggabungkan commit dari feature ke main, entah dengan fast-forward atau dengan membuat merge commit kalau kedua branch sudah menyimpang.
Apa bedanya fast-forward dan merge commit?
Fast-forward terjadi kalau branch saat ini tidak bergerak sejak branch lain bercabang darinya: Git cukup menggeser penunjuknya ke depan, tanpa commit baru. Merge commit dibuat kalau kedua branch punya commit baru, untuk menyatukan riwayat keduanya. Pakai --no-ff agar selalu membuat merge commit, atau --ff-only untuk mewajibkan fast-forward.
Bagaimana cara menyelesaikan konflik merge?
Saat merge mengalami konflik, Git menandai bagian yang bentrok di file terkait dengan penanda <<<<<<<, =======, dan >>>>>>>. Edit setiap file untuk mempertahankan isi yang benar dan hapus penandanya, lalu jalankan git add pada file yang sudah beres dan git commit untuk menyelesaikan merge.
Bagaimana cara membatalkan merge?
Kalau merge masih berjalan (konflik belum diselesaikan), jalankan git merge --abort untuk membatalkannya dan mengembalikan keadaan sebelum merge. Kalau merge sudah selesai secara lokal, git reset --hard ORIG_HEAD mengembalikan branch ke posisinya sebelum merge (berbeda dengan HEAD~1, cara ini juga benar setelah fast-forward, tapi membuang pekerjaan yang belum di-commit). Kalau merge sudah di-push, pakai git revert -m 1 <merge-hash>.
Bisakah saya berlatih ini secara online?
Bisa. Buka playground terminal untuk menjalankan git merge di shell sungguhan di browsermu, tanpa perlu instalasi. Kursus Git interaktif gratis dari Coddy juga membahas merge dan cara menyelesaikan konflik langkah demi langkah.
Ilustrasi bahasa pemrograman di Coddy

Belajar Git bersama Coddy

Mulai