Lewati ke konten utama

Merges

Apa itu Merging?

Merging berarti menggabungkan pekerjaan dari beberapa branch ke dalam satu branch.

Ini biasanya terjadi ketika:

  • Banyak developer bekerja secara bersamaan
  • Semua orang ingin perubahan mereka masuk ke satu branch bersama (sering kali main)

Kasus Sederhana: Tanpa Konflik

Jika:

  • Anda mengedit file yang berbeda, atau
  • Anda mengedit bagian yang berbeda dari file yang sama

Git dapat melakukan merge secara otomatis.

Contoh:

  • Developer A mengedit file1
  • Developer B mengedit file2

Git menggabungkan kedua perubahan tanpa masalah.

Masalah Tersembunyi (Masalah Manusia)

Bahkan tanpa konflik, masalah tetap bisa terjadi:

  • Dua orang memperbaiki bug yang sama dengan cara berbeda
  • Kode berjalan, tetapi logikanya menjadi salah

Praktik terbaik:

  • Buat commit kecil
  • Lakukan pengujian secara rutin
  • Gunakan alat seperti git bisect jika bug muncul

Perintah Merge Dasar

Untuk meng-merge devel ke main:

git checkout main
git merge devel

Sebelum melakukan merge, pastikan direktori kerja bersih:

git status

Ini mencegah kebingungan di kemudian hari.


Apa yang Terjadi Saat Ada Konflik?

Konflik terjadi ketika:

  • Dua branch memodifikasi baris yang sama pada file yang sama

Git akan berhenti dan meminta Anda untuk memperbaikinya.

Contoh keluaran:

CONFLICT (content): Merge conflict in file1
Automatic merge failed; fix conflicts and then commit the result.

Memahami Penanda Konflik

Di dalam file yang mengalami konflik, Anda akan melihat sesuatu seperti ini:

<<<<<<< HEAD
file901
=======
file701
>>>>>>> devel

Artinya:

  • HEAD → branch saat ini (main)
  • devel → branch yang akan digabungkan

Anda harus mengedit file tersebut dan menentukan isi akhir yang benar.


Memperbaiki Konflik Merge (Dua Opsi)

Opsi 1: Membatalkan Merge

Jika terjadi kesalahan:

git reset --hard main

Perbaiki branch secara terpisah, lalu coba merge kembali.


Opsi 2: Perbaiki dan Lanjutkan (Paling Umum)

  1. Edit file yang konflik
  2. Hapus penanda konflik
  3. Simpan konten yang benar
  4. Jalankan:
git add file1
git commit -m "Fix merge conflict"

Merge sekarang selesai.


Merge vs Rebase

Keduanya menggabungkan perubahan, tetapi caranya berbeda.

Apa itu Rebasing?

Rebasing memindahkan pekerjaan Anda agar berada di atas versi terbaru dari branch lain.

Alih-alih menggabungkan riwayat, Git:

  1. Menghapus sementara commit Anda
  2. Memperbarui branch Anda
  3. Menerapkan kembali commit satu per satu

Kapan Rebasing Berguna

Contoh:

  • Anda mulai bekerja dari versi 4.16
  • Branch utama sudah bergerak ke 4.17
  • Fitur Anda belum selesai

Rebasing memperbarui pekerjaan Anda agar diterapkan dengan bersih di 4.17.

Perintah Rebase

git checkout devel
git rebase main

Jika muncul konflik:

git add <file>
git rebase --continue

Untuk membatalkan rebase:

git rebase --abort

Mengapa Rebasing Bisa Berbahaya

Rebasing menulis ulang riwayat.

Masalah yang mungkin timbul:

  • Tes lama mungkin tidak lagi valid
  • Riwayat commit menjadi lebih sulit dilacak
  • Developer lain bisa kehilangan sinkronisasi jika sudah menarik branch Anda

Aturan praktis:

  • Jangan pernah melakukan rebase pada branch bersama/publik
  • Lakukan rebase hanya pada pekerjaan pribadi Anda

Perbandingan Singkat

FiturMergeRebase
RiwayatDipertahankanDitulis ulang
Aman untuk timYaTidak (jika branch dibagikan)
Penyelesaian konflikSekaliBisa berkali-kali
Mudah untuk pemulaYaMenengah
Practical Advice
  • Gunakan merge untuk kerja tim
  • Gunakan rebase untuk merapikan pekerjaan sendiri
  • Selalu merge atau rebase pada milestone yang jelas
  • Jika ragu → merge