Mengatasi Konflik Integrasi dengan Branch

Melalui kelas ini, kamu diajak untuk:

  • Memahami lebih dalam logika branch dalam Git.
  • Mengenali konflik yang kerap terjadi saat mengintegrasikan branch.
  • Mengidentifikasi langkah-langkah mengatasi konflik integrasi branch.

Pengantar

Pada praktiknya di dunia kerja, mengelola branch adalah salah satu hal yang cukup sulit dilakukan. Bayangkan kita tengah mengerjakan proyek yang kompleks dengan anggota tim yang tidak sedikit.

Ilustrasi: Stories via Freepik

Tak menutup kemungkinan, kita akan menemui konflik saat mengintegrasi branch. Pada materi ini, kita akan menyelami lebih dalam soal logika branch, konflik yang kerap terjadi, dan cara mengatasinya.

Logika Branching

Mula-mula, kita perlu memahami logika branch. Ada tiga poin penting yang perlu kita ingat dan pahami, yaitu:

  • Saat membuat branch baru, file-file dalam repository cabang mengikuti isi dari main/master.
  • Saat ada perubahan baru dalam repository main/master SETELAH branch dibuat, maka perubahan-perubahan tersebut tidak akan mengubah isi repository branch.
  • Begitu pula sebaliknya, saat ada perubahan dalam branch, perubahan tersebut tidak akan mengubah isi repository main/master.

Kapan Konflik Integrasi Branch Terjadi?

Logika proses branching di atas kerap menimbulkan konflik. Konflik biasanya ditemui kala melakukan integrasi dengan branch.

Katakan anggota tim kita menambah susunan kode dalam file content.html pada branch add_content. Kebetulan, kita juga juga melakukan hal yang sama di main/master. Saat memberikan perintah Git Merge, CMD akan memberikan notifikasi seperti ini:

C:\Users\HP\website-saya>git merge add_content
Auto-merging content.html
CONFLICT (content): Merge conflict in content.html
Automatic merge failed; fix conflicts and then commit the result.

Dari notifikasi di atas, dapat dilihat bahwa:

  • Ada konflik integrasi antara main/master dengan branch add_content.
  • Integrasi tidak dapat dilakukan sebelum konflik diatasi.

Kita dapat mencari tahu detail konflik dengan menggunakan Git Status. Pada kasus ini, CMD akan menampilkan notifikasi bahwa ada dua modifikasi yang terjadi pada satu file yang sama.

C:\Users\HP\website-saya> git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   content.html

no changes added to commit (use "git add" and/or "git commit -a")

Mengatasi Konflik

LUntuk mengatasi konflik integrasi dengan branch seperti pada kasus di atas, ikuti langkah-langkah di bawah ini:

  • Buka file content.html dalam folder kita, kita bisa menggunakan aplikasi seperti Visual Studio Code untuk mempermudah visualisasinya.
  • Dapat dilihat bahwa ada perbedaan modifikasi antara Current Change dari HEAD (branch kita saat ini, yakni main/master) dan Incoming Change dari add_content (branch lain).
  • Kita bisa langsung memilih salah satu, Current Change atau Incoming Change, atau kita bisa memilih opsi Compare Changes. Opsi ini umum digunakan terlebih dahulu, terutama untuk file dengan banyak perubahan di dalamnya. Dengan opsi tersebut, kita dapat membandingkan perbedaan perubahannya lebih mudah, seperti di bawah ini:
  • Jika sudah membandingkan, saatnya kembali ke file dan pilih opsi di antara Accept Current Changes, Accept Incoming Changes, atau Accept Both Changes. Pada kasus ini, kita memilih untuk menerima perubahan dari branch add_content, yakni Accept Incoming Changes.
  • Setelah itu, buka kembali terminal, lalu beri perintah git add content.html.
  • Sekarang, saatnya memberikan perintah Git Commit dengan git commit -m "Menyelesaikan konflik".
  • Terakhir, cek status dengan Git Status, maka CMD akan menampilkan notifikasi yang menandakan sudah tidak ada konflik lagi, seperti ini:
C:\Users\HP\website-saya> git status
On branch master
nothing to commit, working tree clean

Ringkasan

  • Konflik integrasi antar branch kerap terjadi ketika ada dua perubahan di file yang sama di branch berbeda di saat yang bersamaan.
  • Kita perlu membuka file tersebut dan membandingkan perubahan dari branch berbeda sebelum akhirnya memutuskan untuk menentukan perubahan mana yang akan diterima.

Kuis

Apa opsi perubahan yang dipilih ketika kita ingin menerima perubahan dari branch lain?

Selamat, Anda telah menyelesaikan pelajaran ini
Klik untuk menyelesaikan