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.
Sintaks
| Perintah | Fungsinya |
|---|---|
git merge feature | Merge feature ke branch saat ini |
git merge --no-ff feature | Selalu membuat merge commit |
git merge --ff-only feature | Merge hanya kalau bisa fast-forward |
git merge --squash feature | Menggabungkan commit branch itu menjadi satu |
git merge --abort | Membatalkan merge yang konflik |
Fast-forward vs merge commit
| Skenario | Fast-forward | Merge commit (--no-ff) |
|---|---|---|
| Membuat commit baru | Tidak | Ya |
| Menyimpan jejak branch | Tidak | Ya |
| Terjadi saat | Branch saat ini belum menyimpang | Kedua branch punya commit baru |
Menyelesaikan konflik merge
Kalau kedua branch mengubah baris yang sama, Git berhenti sejenak.
| Langkah | Perintah | Hasil |
|---|---|---|
| 1 | Edit file yang konflik | Pilih baris yang benar, hapus penandanya |
| 2 | git add <file> | Tandai konflik sudah selesai |
| 3 | git commit | Menyelesaikan merge |
Pertanyaan seputar git merge
Bagaimana cara merge satu branch ke branch lain di Git?
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?
--no-ff agar selalu membuat merge commit, atau --ff-only untuk mewajibkan fast-forward.Bagaimana cara menyelesaikan konflik merge?
<<<<<<<, =======, 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?
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?
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.