Skip to content

3. Giải quyết Conflict (Xung đột)

IMPORTANT

MINDSET: Conflict là chuyện cơm bữa. Đừng sợ nó. Nó chỉ là Git đang hỏi bạn: "Cả 2 người cùng sửa dòng 10. Tôi nên chọn cái nào?".

3.1 Nhận diện Conflict

Khi bạn merge hoặc rebase, nếu Git thấy cùng một dòng code bị sửa bởi 2 người khác nhau, nó sẽ dừng lại và la lên: CONFLICT (content): Merge conflict in file.txt

Lúc này, mở file bị conflict lên, bạn sẽ thấy các dấu hiệu này:

text
<<<<<<< HEAD
Code hiện tại của bạn (trên máy local)
console.log("Hello Vietnam");
=======
Code mới từ server (của đồng nghiệp)
console.log("Xin Chao Vietnam");
>>>>>>> feature/language-update
  • <<<<<<<: Bắt đầu vùng xung đột.
  • =======: Đường phân chia.
  • >>>>>>>: Kết thúc vùng xung đột.

3.2 Cách xử lý (Fearless Resolution)

Bạn có 3 lựa chọn logic:

  1. Giữ code của mình (Current Change).
  2. Lấy code của họ (Incoming Change).
  3. Kết hợp cả hai (Both).

Công cụ hỗ trợ

Đừng sửa thủ công bằng cách xóa các dấu <<< === >>>. Rất dễ sai sót.

Dùng VS Code: VS Code tự động phát hiện conflict và hiện các nút bấm ngay trên dòng code: Accept Current Change | Accept Incoming Change | Accept Both Changes

Quy trình chuẩn:

  1. Bấm chọn nút phù hợp cho từng file.
  2. Lưu file lại.
  3. Chạy git add . để đánh dấu đã sửa xong.
  4. Chạy git commit (nếu đang merge) hoặc git rebase --continue (nếu đang rebase).

TIP

HPN's Advice: Nếu conflict quá phức tạp (hàng trăm dòng), đừng đoán mò. Hãy gọi trực tiếp người đồng nghiệp đã viết đoạn code kia (xem git blame) để cùng ngồi quyết định (Pair Review). Code sai logic nguy hiểm hơn Code lỗi syntax.