Git - Mengurus Konflik

Hai, para pemula pengoding! Hari ini, kita akan mempelajari salah satu keterampilan paling penting dalam pemrograman kolaboratif: mengurus konflik di Git. Sebagai guru ilmu komputer tetangga Anda, saya di sini untuk mengarahkan Anda melalui topik yang kadang-kadang sulit tapi selalu penting ini. Mari kita mulai!

Git - Handling Conflicts

Memahami Konflik Git

Sebelum kita masuk ke hal yang mendetail, mari bicarakan apa itu konflik. Bayangkan Anda dan teman Anda keduanya sedang melukis tembok yang sama. Anda memutuskan untuk melukisnya biru, sedangkan teman Anda melukisnya merah. Ketika Anda bertemu, Anda menyadari Anda memiliki masalah - ini adalah esensi dari apa itu konflik Git di dunia pemrograman.

Dalam istilah Git, konflik terjadi ketika dua cabang membuat perubahan pada baris yang sama dalam sebuah file, atau ketika sebuah file dihapus dalam satu cabang tetapi diedit dalam cabang lain. Git tidak dapat secara otomatis menentukan perubahan mana yang harus mendahului.

Melakukan Perubahan di Cabang wchar_support

mari kita mulai dengan contoh praktis. Kita akan membuat cabang baru bernama wchar_support dan membuat beberapa perubahan di sana.

git checkout -b wchar_support

Perintah ini membuat cabang baru dan beralih kepadanya. Sekarang, mari kita edit file hello.c:

#include <stdio.h>

int main() {
printf("Hello, World!\n");
return 0;
}

Kita akan modifikasi ini untuk mendukung karakter lebar:

#include <wchar.h>

int main() {
wprintf(L"Hello, Wide World!\n");
return 0;
}

Sekarang, mari kita commit perubahan ini:

git add hello.c
git commit -m "Menambah dukungan karakter lebar"

Bagus! Kita telah membuat perubahan di cabang wchar_support.

Melakukan Perubahan di Cabang Master

Sekarang, mari kita kembali ke cabang master dan membuat perubahan yang berbeda ke file yang sama:

git checkout master

Edit hello.c lagi:

#include <stdio.h>

int main() {
printf("Hello, Beautiful World!\n");
return 0;
}

Dan commit perubahan ini:

git add hello.c
git commit -m "Memperbarui pesan salam"

Mengatasi Konflik

Sekarang, bagian yang menarik! mari kita mencoba untuk menggabungkan cabang wchar_support ke master:

git merge wchar_support

Ups! Git kemungkinan akan memberikan Anda pesan seperti ini:

Auto-merging hello.c
CONFLICT (content): Merge conflict in hello.c
Automatic merge failed; fix conflicts and then commit the result.

Jangan panik! Ini adalah hal normal. Git hanya memberitahu Anda bahwa dia tidak dapat secara otomatis menggabungkan perubahan karena kedua cabang mengedit bagian yang sama dari file.

Menyelesaikan Konflik

Sekarang adalah saat untuk merapatkan sarung tangan dan menyelesaikan konflik ini secara manual. Jika Anda membuka hello.c, Anda akan melihat sesuatu seperti ini:

<<<<<<< HEAD
#include <stdio.h>

int main() {
printf("Hello, Beautiful World!\n");
=======
#include <wchar.h>

int main() {
wprintf(L"Hello, Wide World!\n");
>>>>>>> wchar_support
return 0;
}

Biar kitauraikan ini:

  • Semua yang berada antara <<<<<<< HEAD dan ======= adalah dari cabang saat ini (master).
  • Semua yang berada antara ======= dan >>>>>>> wchar_support adalah dari cabang yang akan digabungkan.

Untuk menyelesaikan konflik, kita perlu memutuskan perubahan mana yang akan dipertahankan. Kita mungkin memutuskan bahwa kita ingin memiliki kedua dukungan karakter lebar dan pesan baru. Jadi, kita dapat mengedit file menjadi seperti ini:

#include <wchar.h>

int main() {
wprintf(L"Hello, Beautiful Wide World!\n");
return 0;
}

Setelah diedit, kita perlu men-staging file dan commit:

git add hello.c
git commit -m "Menggabungkan wchar_support, menjaga kedua dukungan karakter lebar dan pesan baru"

Selamat! Anda telah menyelesaikan konflik Git pertama Anda.

Metode Umum untuk Menyelesaikan Konflik

Berikut adalah tabel metode umum untuk menyelesaikan konflik:

Metode Deskripsi
Tetapkan Saat Ini Pilih perubahan dari cabang saat ini (master)
Tetapkan Masuk Pilih perubahan dari cabang masuk (wchar_support)
Tetapkan Keduanya Sertakan perubahan dari kedua cabang
Edit Manual Edit file dengan hati-hati untuk menggabungkan perubahan

Ingat, metode terbaik tergantung pada situasi khusus dan kebutuhan proyek Anda.

Kesimpulan

Menangani konflik di Git mungkin terlihat menakutkan pada awalnya, tapi dengan latihan, itu menjadi kebiasaan. Ini adalah keterampilan penting dalam pemrograman kolaboratif, memungkinkan beberapa pengembang bekerja pada proyek yang sama tanpa saling melanggar (terlalu banyak).

Dalam tahun-tahun mengajar saya, saya melihat murid-murid berubah dari takut terhadap konflik menjadi meraih kesempatan untuk mereview dan meningkatkan kode. Jadi jangan khawatir jika Anda merasa sulit pada awalnya - Anda berada di jalur yang benar!

Berikut kali Anda menemui konflik Git,ambil sebau brengsek favorit Anda, dan ingat: Anda tidak hanya menyelesaikan konflik, Anda menciptakan usaha kreatif tim Anda. Selamat coding!

Credits: Image by storyset