DDevArchive
Đăng nhập

Merge conflict và cách giải quyết không sợ hãi

Merge conflict không phải "lỗi". Nó là dấu hiệu hai người cùng sửa một chỗ và máy tính lịch sự hỏi: rốt cuộc giữ cái nào? Giải quyết xong là bạn hiểu git hơn đa số dev.

Conflict xảy ra khi nào

Khi git merge phát hiện hai nhánh sửa đúng cùng vài dòng. Git không tự chọn được nên chèn cả hai phiên bản vào file và đánh dấu để bạn quyết.

// File: conflict.js
<<<<<<< HEAD
const maxRetry = 3;
=======
const maxRetry = 5;
>>>>>>> feature/timeout

// Dòng trên là 2 phiên bản khác nhau.
// Bạn phải chọn 1, hoặc ghép cả hai, rồi xoá các dấu <<< === >>>
Đừng sửa vội trong editor khi chưa hiểu

Conflict chứa cả hai phiên bản. Đọc kỹ ý của người kia trước khi xoá. Xoá nhầm phần “của bạn” là mất cả tiếng của người khác. Nếu phức tạp, gọi người liên quan nói chuyện 2 phút.

Quy trình giải quyết

// File: solve.sh
git switch main
git pull
git switch feature/login
git merge main            # kéo main mới nhất vào để test sớm

# 1. sửa conflict trong editor, xoá dấu <<< === >>>
git add .
git commit -m "merge: chốt maxRetry = 5"
git push
Mẹo giảm conflictGiải thích
Pull trước khi làmLuôn bắt đầu từ code mới nhất, ít lệch sau này
Commit nhỏ, thường xuyênPhạm vi sửa nhỏ → ít vùng đụng nhau
Ít sửa cùng file với người khácPhân chia file/class rõ ràng
Merge main về thường xuyênGiải conflict từng ít một thay vì dồn cục

❓ Khi gặp conflict, việc ĐẦU TIÊN bạn nên làm là gì?

  • Nhận diện được file đang conflict (có <<< === >>>)
  • Đọc hiểu cả hai phiên bản trước khi chọn
  • Merge main về nhánh của mình thường xuyên
  • Commit conflict resolution với message rõ ràng