Preview ng leksyon

Konflik Penggabungan: Jangan Panik — Pahami dan Selesaikan

Konflik seringkali membuat pemula takut, namun setelah sesi ini Anda akan menghadapinya dengan tenang. Kita akan membahas mengapa konflik terjadi (Git tidak bisa membaca pikiran — ia tidak tahu perubahan mana yang lebih penting), cara membaca penanda konflik, dan bagaimana memilih solusi yang tepat. Kami akan menunjukkan dua pendekatan: resolusi manual dan penggunaan alat penggabungan.

konflik penggabungan penanda konflik resolusi konflik
Ano ang matututunan mo sa leksyong ito
  • Anda akan memahami sifat konflik penggabungan dan berhenti takut terhadapnya — konflik akan menjadi dapat diprediksi.
  • Anda akan dapat menyelesaikan konflik secara mandiri dengan benar membaca penanda Git.
  • Anda akan belajar mengonfigurasi alat penggabungan di editor Anda untuk resolusi konflik secara visual.

Simula ng leksyon

Tiga Jenis Konflik Merge

  • Konflik konten: perubahan pada baris yang sama
  • Konflik rename: file diubah dan diganti namanya
  • Konflik penghapusan: file dihapus di satu cabang, tetapi diubah di cabang lain
  • Konflik rename paling menjebak bagi Git
  • Periksa riwayat file jika konflik terasa mencurigakan

Bayangkan Anda dan rekan sedang mengerjakan fitur baru untuk aplikasi yang familiar, misalnya fitur pembayaran di Gojek atau katalog produk di Tokopedia. Tiba-tiba Git memberi tahu ada konflik. Langkah pertama menuju solusi adalah memahami jenis konfliknya. Konflik konten terjadi ketika perubahan di dua cabang menyentuh baris yang sama. Konflik rename lebih rumit: satu pengembang mengganti nama file, sementara pengembang lain mengedit isi file yang sama. Jenis ketiga adalah konflik penghapusan, ketika file dihapus di satu cabang tetapi masih diubah di cabang lain. Konflik rename sering paling sulit karena Git tidak selalu dapat melacak riwayat file dengan akurat setelah nama file berubah. Karena itu, saat menemukan konflik yang terasa aneh, selalu periksa riwayat perubahan file.

Anatomi Konflik yang Rumit

  • Penanda <<<<<<< menunjukkan perubahan Anda
  • ======= memisahkan versi Anda dan versi orang lain
  • >>>>>>> menandai akhir blok konflik
  • git status akan menampilkan semua file bermasalah
  • git diff memberikan perbandingan detail atas perubahan

Anggaplah Anda menggabungkan cabang feature ke main dan melihat pesan konflik. Buka file yang bermasalah—Anda akan menemukan penanda khusus. Semua yang berada di antara <<<<<<< HEAD dan ======= adalah perubahan Anda. Semua yang berada di antara ======= dan >>>>>>> feature adalah perubahan dari cabang yang sedang digabungkan. Gunakan git status untuk melihat semua file yang berkonflik, dan git diff untuk melihat perbedaan secara detail. Ingat: penanda konflik bukan kesalahan; penanda itu adalah petunjuk tentang bagian yang perlu Anda putuskan.

#!/bin/bash
# conflict_analysis.sh

echo "Membuat repositori uji coba"
mkdir conflict-demo && cd conflict-demo
git init

echo "Membuat file dan membuat komit pertama di main"
echo 'Baris 1' > file.txt
echo 'Baris 2' >> file.txt
git add . && git commit -m 'Komit awal'

echo "Membuat cabang feature dan mengubah baris pertama"
git checkout -b feature
sed -i 's/Baris 1/Baris 1 diubah di feature/' file.txt
git commit -am 'Mengubah baris 1 di feature'

echo "Kembali ke main dan mengubah baris yang sama"
git checkout main
sed -i 's/Baris 1/Baris 1 diubah di main/' file.txt
git commit -am 'Mengubah baris 1 di main'

echo "Mencoba menggabungkan cabang"
git merge feature || echo 'Konflik!'

echo "\nMelihat status:"
git status --short

echo "\nMenampilkan file yang berkonflik:"
cat file.txt

Strategi Menyelesaikan Konflik

  • Penyuntingan manual: hapus penanda, sisakan bagian yang tepat
  • Alat GUI: meld, kdiff3 untuk perbandingan visual
  • --ours/--theirs: terima versi Anda atau versi orang lain
  • Pada rebase, konflik diselesaikan untuk setiap komit
  • Setelah selesai, jangan lupa jalankan git add dan git commit

Setelah konflik terdeteksi, ada beberapa cara untuk menyelesaikannya. Anda bisa membuka file secara manual, menghapus penanda konflik, lalu menyisakan kode yang benar. Jika lebih nyaman dengan tampilan visual, gunakan alat seperti meld atau kdiff3; alat ini menampilkan tiga versi file sekaligus. Jika Anda yakin perubahan Anda yang harus dipakai, gunakan git checkout --ours untuk mempertahankan versi Anda, atau --theirs untuk memakai versi dari cabang lain. Hati-hati saat melakukan rebase: konflik bisa muncul pada setiap komit yang sedang dipindahkan. Setelah memilih solusi, tandai file dengan git add lalu lanjutkan proses merge atau rebase.

#!/bin/bash
# resolve_strategies.sh

echo "Cara 1: Penyelesaian manual"
echo 'Edit file, lalu hapus penanda konflik'
echo 'Kemudian jalankan: git add file.txt'

echo "\nCara 2: Terima versi kita"
git checkout --ours file.txt

echo "\nCara 3: Terima versi mereka"
git checkout --theirs file.txt

echo "\nCara 4: Gunakan alat bantu merge"
echo 'git mergetool --tool=meld'

echo "\nSetelah memilih cara, selesaikan merge:"
echo 'git commit -m "Selesaikan konflik merge"'

Buong leksyon ay para sa subscription

34 pang slide sa buong bersyon.

Mabubuksan ang video, lahat ng slide, tala, pagsusulit, AI tutor, at interview pagkatapos mag-sign in at mag-subscribe.

Mag-sign in o magparehistro Mag-subscribe

Nilalaman ng leksyon

  1. Tiga Jenis Konflik Merge
  2. Anatomi Konflik yang Rumit
  3. Strategi Menyelesaikan Konflik
  4. Pencegahan dan Praktik Terbaik
  5. Cara Membaca Konflik Multibaris di Git
  6. Memahami Penanda Konteks
  7. Konflik Bersarang: Strategi Penyelesaian
  8. Otomasi dan alat lanjutan
  9. Strategi pemilihan: HEAD atau branch?
  10. Prinsip 'kejutan minimal'
  11. Konflik semantik: musuh yang tak terlihat
  12. Alat dan otomasi
  13. Memilih alat: kapan menggunakan apa
  14. VS Code: konfigurasi dan fitur lanjutan
  15. Beyond Compare: skenario untuk konflik kompleks
  16. Integrasi ke Git Flow dan Otomasi
  17. Mengotomasi Merge melalui .gitattributes
  18. Menulis Merge Driver Sendiri
  19. Git rerere — Asisten Pribadi Anda
  20. Strategi Otomasi Lanjutan
  21. Merancang Workflow untuk Tim Besar
  22. Code Review sebagai Alat Pencegah Konflik
  23. Strategi Bekerja dengan Branch Feature Jangka Panjang
  24. Alat dan otomatisasi untuk menyelesaikan konflik
  25. Bahaya menerima perubahan secara membabi buta
  26. Strategi menyelesaikan konflik dengan aman
  27. Pengujian setelah merge: yang perlu diperiksa
  28. Integrasi dengan CI/CD dan langkah pencegahan
  29. Perbedaan konflik saat rebase dan merge
  30. Bekerja dengan --rebase-merges
  31. Strategi menyelesaikan konflik berurutan
  32. Teknik Lanjutan dan Debugging rebase
  33. CI/CD sebagai Sistem Kontrol Kualitas
  34. GitHub Actions: Pemeriksaan Konflik
  35. Danger-JS: Otomatisasi Pemeriksaan yang Cerdas
  36. Resolusi Konflik Otomatis di CI/CD
  37. Konflik: Dari Panik Menjadi Percaya Diri

Mga artikulo tungkol sa araling ito

Lahat ng leksyon ng kurso

  1. Pengantar: Git dari Nol hingga Pengembang yang Percaya Diri
  2. Apa Sebenarnya Git Itu — dan Kenapa Tanpanya Sulit Dapat Kerja
  3. Instalasi dan Konfigurasi: Menyiapkan Git untuk Pertama Kali
  4. Repositori Pertama: init, add, commit dan Keajaiban Indeks
  5. Membaca Riwayat: log, diff, show dan Navigasi ke Masa Lalu
  6. Cabang: Realitas Paralel untuk Kode Anda
  7. Membatalkan Kesalahan: restore, reset, revert — dengan Benar dan Berbahaya
  8. GitHub dan Repositori Jarak Jauh: Kode Anda di Awan
  9. Kerja Tim: Fork, Feature Branch, dan Pull Request
  10. Konflik Penggabungan: Jangan Panik — Pahami dan Selesaikan
  11. Proses Git di Tim Nyata: Alur Kerja Mana yang Dipilih
  12. Alat Lanjutan: rebase, stash, cherry-pick, dan tag
  13. Proyek Akhir: Simulasi Pengembangan Tim Nyata