GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menyelesaikan Konflik Penggabungan di Git

Pendahuluan

git merge perintah membantu kontributor menambah proyek dari cabang. Konsep ini adalah salah satu ide inti dari pemrograman kolaboratif, memungkinkan banyak orang untuk mengerjakan bagian kode mereka tanpa konflik.

Ketika beberapa kontributor bekerja pada bagian kode yang sama atau bekerja dengan banyak cabang, konflik penggabungan pasti akan terjadi. Tujuan utama git merge adalah untuk menyelesaikan atau memperingatkan tentang konflik ini secara otomatis.

Panduan ini menjelaskan apa yang dimaksud dengan konflik gabungan dan menawarkan resolusi ketika konflik tidak diurutkan secara otomatis. Artikel ini juga memberikan tips bermanfaat untuk mencegah konflik penggabungan Git.

Prasyarat

  • Git diinstal dan dikonfigurasi (Di Windows, Mac, dan Ubuntu).
  • Konflik git merge antara cabang lokal dan jarak jauh.
  • Akses ke terminal atau baris perintah
  • Editor Vim untuk tutorial (Untuk menginstal Vim, ikuti salah satu panduan kami:Cara Menginstal Vim 8.2 di Ubuntu 18.04 atau Cara Menginstal Vim 8.2 di CentOS 7)

Apa itu Konflik Penggabungan Git?

Saat bekerja dengan sistem kontrol versi seperti Git, sebagian besar konflik gabungan akan diselesaikan secara otomatis. Namun, ada situasi di mana git merge tidak dapat menyelesaikan masalah.

Beberapa contoh konflik penggabungan meliputi:

  • Mengubah baris kode yang sama dalam sebuah file.
  • Penghapusan file saat perubahan terjadi di tempat lain.

Karena masalah terjadi secara lokal dan anggota proyek lainnya tidak mengetahui masalah tersebut, penyelesaian konflik adalah prioritas tinggi dan memerlukan perbaikan segera.

Jenis Konflik Penggabungan Git

Jenis umum konflik gabungan bergantung pada saat masalah muncul. Konflik terjadi baik:

  • Sebelum bergabung , menunjukkan ada perubahan lokal yang tidak up to date. Pesan kesalahan konflik muncul sebelum penggabungan dimulai untuk menghindari masalah.
  • Selama penggabungan , menunjukkan masalah penimpaan. Pesan kesalahan muncul dan menghentikan proses penggabungan untuk menghindari menimpa perubahan.

Cara Menyelesaikan Konflik Penggabungan di Git

Ada tiga cara untuk menyelesaikan konflik penggabungan di Git:

1. Terima versi lokal . Untuk menerima semua perubahan pada file dari versi lokal, jalankan:

git checkout --ours <file name>

Atau, untuk menerima versi lokal untuk semua file yang bentrok, gunakan:

git merge --strategy-option ours

2. Terima versi jarak jauh . Untuk memperbarui perubahan pada file dari cabang jarak jauh, jalankan:

git checkout --theirs <file name>

Terima versi jarak jauh untuk semua file yang bentrok dengan:

git merge --strategy-option theirs

3. Tinjau perubahan satu per satu . Opsi terakhir adalah meninjau setiap perubahan secara terpisah. Opsi ini juga merupakan jalur terbaik untuk diambil, terutama saat bekerja dengan banyak file dan orang. Untuk membuat pekerjaan ini lebih mudah dikelola, gunakan alat khusus untuk membantu meninjau konflik individu .

Pada akhirnya, pilihan bagian kode mana yang tetap dan mana yang tidak bergantung pada keputusan pengembang untuk proyek saat ini.

Mendapatkan Konflik Penggabungan di Git

Konflik penggabungan di Git terjadi ketika perintah git merge membuat kesalahan.

Pesan kesalahan mencetak informasi tentang di mana konflik terjadi. Periksa file dari pesan kesalahan dan lihat konten tempat konflik penggabungan terjadi:

Git secara otomatis menambahkan tiga indikator di sepanjang baris kode yang saling bertentangan:

  • <<<<<<< (tujuh karakter "kurang dari") diikuti dengan HEAD , yang merupakan alias untuk cabang saat ini. Simbol menunjukkan awal suntingan dalam bagian ini.
  • ======== (tujuh karakter "sama dengan tanda"), yang menunjukkan akhir revisi dalam cabang saat ini dan awal pengeditan dalam cabang baru.
  • >>>>>>> (tujuh karakter "lebih besar dari") diikuti oleh cabang tempat percobaan penggabungan terjadi. Simbol yang ditambahkan menunjukkan akhir dari suntingan dalam cabang yang bentrok.

Sintaks yang ditambahkan membantu menelusuri kode untuk menemukan lokasi konflik gabungan. Namun, pendekatan yang jauh lebih mudah adalah menggunakan alat perbedaan/penggabungan untuk menemukan masalah dan melacak perubahannya.

Menyiapkan Alat Diff Default di Git

Untuk menyiapkan alat diff default untuk git mergetool :

1. Jalankan baris berikut di terminal Anda:

git mergetool --tool-help

Output mencetak semua alat diff yang didukung untuk pengaturan Anda saat ini:

Alat yang berbeda tersedia berdasarkan editor pilihan. Misalnya:

  • Emacs alat diff:Ediff atau emerge
  • Vim alat diff:vimdiff, vimdiff2 atau vimdiff3

Langkah selanjutnya menunjukkan contoh cara menyiapkan vimdiff alat untuk Vim.

2. Ubah git config untuk menyetel alat gabungan default:

git config merge.tool <tool name>

Misalnya, jika menggunakan Vim, jalankan:

git config merge.tool vimdiff

3. Setel alat diff untuk menampilkan nenek moyang yang sama untuk kedua file, yang merupakan versi sebelum pengeditan apa pun:

git config merge.conflictstyle diff3

4. Setel opsi untuk tidak meminta sebelum dijalankan:

git config mergetool.prompt false

Penyiapan alat diff untuk Git selesai.

Menggunakan Mergetool untuk Melihat Perbedaannya

Untuk menggunakan mergetool dan lihat perbedaannya, jalankan:

git mergetool

Output menampilkan jendela dengan empat tampilan:

1. LOKAL mewakili versi file dari cabang saat ini.

2. DASAR adalah tampilan file sebelum ada perubahan.

3. JAUH JAUH menunjukkan bagaimana file terlihat di cabang jarak jauh tempat informasi yang bertentangan berada.

4. DIGABUNG memiliki file gabungan terakhir. Hasil ini mewakili apa yang disimpan ke repositori.

Perintah navigasi utama antara jendela ini adalah:

  • CTRL+WW untuk berpindah antar jendela.
  • CTLR+WJ untuk melompat ke tampilan jendela MERGED.
  • CTRL+WX untuk berpindah tempat dari jendela.

Untuk navigasi lanjutan, informasi tersedia dengan perintah :help window-moving .

Memperbarui dan Menyelesaikan Konflik Penggabungan

Perbarui file MERGED untuk menyelesaikan konflik. Beberapa cara pintas untuk memperbarui versi MERGED antara lain:

  • :diffg LOKAL memperbarui ke versi LOKAL.
  • :diffg DASAR pembaruan ke versi BASE.
  • :diffg REMOTE pembaruan ke versi REMOTE.

Setelah informasi diperbarui, simpan dan keluar dengan :wqa .

Berkomitmen dan Membersihkan

Langkah terakhir adalah melakukan dan membersihkan file tambahan. Komit versi yang diperbarui dengan menjalankan:

git commit -m "<your message>"

Alat diff membuat file tambahan pada proyek untuk membandingkan versi. Bersihkan dengan:

git clean -f

Tips Cara Mencegah Konflik Penggabungan

Konflik penggabungan hanya terjadi ketika komputer tidak dapat menyelesaikan masalah secara otomatis.

Berikut adalah beberapa tips tentang cara mencegah konflik penggabungan:

  • Gunakan file baru daripada yang sudah ada bila memungkinkan.
  • Hindari menambahkan perubahan di akhir file.
  • Dorong dan tarik perubahan sesering mungkin.
  • Jangan mempercantik kode atau mengatur impor sendiri.
  • Hindari pola pikir programmer tunggal dengan mengingat orang lain yang mengerjakan kode yang sama.

Ubuntu
  1. Cara Memperbarui Git

  2. Bagaimana Git Bekerja?

  3. Cara Membuat Cabang Baru di Git

  1. Cara Menginstal Git di Ubuntu 18.04 / 20.04

  2. Cara Menginstal Git di CentOS 8

  3. Cara Mengalihkan Cabang di Git

  1. Cara menginstal Git di AlmaLinux

  2. Cara Menginstal Git di Ubuntu 18.04

  3. Cara Menginstal Git di Ubuntu 20.04