Cách Xử Lý Git Merge Conflict Nhanh Chóng Và Chuẩn Kỹ Thuật (2026)
- Home
- Cách Xử Lý Git Merge Conflict Nhanh Chóng Và Chuẩn Kỹ Thuật (2026)
Trong quá trình làm việc nhóm với Git, xung đột mã nguồn (Merge Conflict) là điều khó tránh khỏi. Dù bạn là Lập trình viên mới hay đã có kinh nghiệm, việc nắm vững cách xử lý Git Merge Conflict không chỉ giúp bảo vệ code base an toàn mà còn tối ưu hóa quy trình làm việc chuyên nghiệp.
Bài viết này từ DCSoftTech sẽ hướng dẫn chi tiết bản chất của Merge Conflict và các bước xử lý từng bước một cách chuẩn xác nhất.
Git Merge Conflict (Xung đột khi hợp nhất) xảy ra khi Git không thể tự động hợp nhất các thay đổi từ hai nhánh (branch) khác nhau.
C3 - C4 (Branch Feature)
/
C1 - C2
\
C5 - C6 (Branch Main)
Sửa cùng một dòng code: Hai người cùng chỉnh sửa một dòng lệnh trên cùng một file ở 2 nhánh khác nhau.
Xóa file đang được chỉnh sửa: Một nhánh thực hiện xóa file, trong khi nhánh còn lại tiếp tục sửa đổi file đó.
Gộp nhánh thiếu đồng bộ: Nhánh cá nhân chưa cập nhật những thay đổi mới nhất từ nhánh chính (main/master) trước khi tạo Pull Request (PR).
Khi xảy ra xung đột, Git sẽ tạm dừng quá trình merge và đánh dấu vị trí bị lỗi trong file. Bạn có thể tự tay xử lý theo 4 bước sau:
Mở Terminal/Command Prompt tại thư mục dự án và chạy lệnh:
Bash
git status
Git sẽ liệt kê các file nằm trong trạng thái Unmerged paths (màu đỏ).
Mở file bị lỗi bằng code editor (VS Code, WebStorm,…). Bạn sẽ thấy Git chèn các ký tự đánh dấu xung đột:
Plaintext
<<<<<<< HEAD
// Code hiện tại trên nhánh của bạn (Current Change)
console.log("Hello from DCSoftTech");
=======
// Code từ nhánh bạn muốn gộp vào (Incoming Change)
console.log("Welcome to DCSoftTech Studio");
>>>>>>> feature-branch
<<<<<<< HEAD: Bắt đầu đoạn code trên nhánh bạn đang làm việc.
=======: Ranh giới phân chia giữa 2 phiên bản.
>>>>>>> [branch-name]: Kết thúc đoạn code từ nhánh được hợp nhất.
Cách xử lý:
Giữ lại phần code đúng nhất hoặc kết hợp cả hai.
Xóa toàn bộ các đường kẻ đánh dấu (<<<<<<<, =======, >>>>>>>).
Sau khi sửa code và lưu file, thông báo cho Git biết file đã được xử lý bằng lệnh add:
Bash
git add <tên-file-đã-sửa>
# Hoặc thêm tất cả các file đã sửa:
git add .
Tạo một commit hoàn tất việc xử lý xung đột:
Bash
git commit -m "Fix: Resolve merge conflict between main and feature branch"
Nếu không muốn sửa thủ công từng ký tự trong Terminal, bạn có thể tận dụng các công cụ GUI hiện đại:
| Công cụ | Đặc điểm nổi bật | Đối tượng phù hợp |
| VS Code Built-in Editor | Trực quan với các nút bấm Accept Current, Accept Incoming, Accept Both | Lập trình viên mọi cấp độ |
| GitKraken / Sourcetree | Giao diện đồ họa rõ ràng, quản lý nhánh trực quan | Dev thích dùng phần mềm GUI |
| Meld / Beyond Compare | Công cụ so sánh file chuyên sâu (3-way merge) | Xử lý các file conflict lớn, phức tạp |
Trong trường hợp xung đột quá phức tạp và bạn muốn quay về trạng thái an toàn ban đầu trước khi merge, hãy dùng lệnh hủy:
Bash
git merge --abort
Lệnh này sẽ khôi phục nhánh của bạn về trạng thái ngay trước khi thực hiện lệnh git merge.
Để tối ưu quy trình làm việc tại DCSoftTech, các kỹ sư phần mềm thường áp dụng các nguyên tắc sau:
Rebase/Pull thường xuyên: Thường xuyên cập nhật code mới từ main về nhánh feature cá nhân bằng git pull origin main hoặc git rebase main.
Chia nhỏ Task & Commit: Không giữ nhánh quá lâu. Làm xong tính năng nào hãy tạo PR và gộp nhánh ngay.
Giao tiếp trong team: Thông báo cho đồng nghiệp khi thay đổi cấu trúc thư mục hoặc sửa các file cấu hình dùng chung (package.json, .env,…).