Cơ bảnKiến thức cơ bản

Giải quyết Conflict trong Git: Hướng dẫn từng bước chi tiết

8 phút đọc0 lượt xem
#git#conflict#merge#github

Conflict trong Git là gì?

Bạn đã từng thấy dòng này trong code chưa?

<<<<<<< HEAD
console.log("Xin chào Nguyễn Văn A!");
=======
console.log("Xin chào Trần Thị B!");
>>>>>>> feature/update-greeting

Đừng lo lắng — đây chỉ là conflict (xung đột) trong Git, và nó rất bình thường khi làm việc nhóm.

Conflict xảy ra khi: Git không thể tự động merge hai nhánh vì cả hai đã chỉnh sửa cùng một đoạn code theo cách khác nhau. Thay vì tự quyết định giữ cái nào, Git đánh dấu file và nhờ bạn quyết định.

Khi nào xảy ra conflict?

Conflict thường xảy ra trong các tình huống sau:

  • Hai developer chỉnh sửa cùng một dòng trong cùng một file trên hai nhánh khác nhau
  • Khi chạy git merge, git pull, hoặc git rebase
  • Một người xóa file, người kia sửa file đó

Ví dụ thực tế: Bạn và đồng nghiệp cùng sửa file app.js dòng 15. Đồng nghiệp push code trước. Khi bạn chạy git pull, Git phát hiện conflict và báo cho bạn biết.

Cách đọc hiểu conflict markers

Khi có conflict, Git tự động thêm các "markers" (dấu hiệu) vào file:

<<<<<<< HEAD
// Code của BẠN (nhánh hiện tại)
Nội dung phiên bản của bạn
=======
// Code của NGƯỜI KHÁC (nhánh đang merge vào)
Nội dung phiên bản của đồng nghiệp
>>>>>>> feature/ten-nhanh
  • <<<<<<< HEAD: bắt đầu phần code của bạn (nhánh hiện tại)
  • =======: ranh giới phân cách
  • >>>>>>> feature/ten-nhanh: bắt đầu code từ nhánh đang merge vào

Nhiệm vụ của bạn: quyết định giữ code nào (hoặc kết hợp cả hai), xóa tất cả markers, rồi lưu file.

Giải quyết conflict bằng VS Code

VS Code có tính năng tích hợp để giải quyết conflict — đây là cách nhanh nhất cho người mới:

  1. Mở file có conflict trong VS Code
  2. VS Code hiển thị giao diện trực quan với 4 tùy chọn ngay trên đoạn code conflict:
    • Accept Current Change: giữ code của bạn (HEAD), bỏ code của họ
    • Accept Incoming Change: giữ code của họ, bỏ code của bạn
    • Accept Both Changes: giữ cả hai (hiển thị bên dưới nhau)
    • Compare Changes: xem so sánh song song
  3. Click vào tùy chọn phù hợp
  4. Lưu file (Ctrl+S / Cmd+S)
  5. Stage và commit:
git add app.js
git commit -m "Resolve conflict: giữ lời chào theo yêu cầu ticket #123"

Giải quyết conflict bằng command line

Nếu không dùng VS Code, đây là quy trình thủ công:

# Bước 1: Xem file nào đang có conflict
git status
# both modified:   app.js
# both modified:   utils.js

# Bước 2: Mở file (ví dụ với nano, vim, hoặc bất kỳ editor nào)
# Tìm và chỉnh sửa: xóa markers, giữ code đúng

# Bước 3: Stage file đã giải quyết
git add app.js
git add utils.js

# Bước 4: Hoàn tất merge
git commit -m "Resolve conflicts"

Nếu bạn muốn hủy bỏ merge và quay về trạng thái trước:

git merge --abort
# hoặc khi đang rebase:
git rebase --abort

Phòng tránh conflict hiệu quả

Conflict là điều bình thường, nhưng bạn có thể giảm thiểu chúng bằng:

1. Pull trước khi bắt đầu làm việc mỗi ngày

git pull origin main

2. Dùng feature branch — không làm trực tiếp trên main

git checkout -b feature/login-page
# Làm việc trên nhánh riêng
# Merge lại sau khi hoàn thành

3. Dùng git stash trước khi pull

git stash          # Tạm lưu thay đổi chưa commit
git pull origin main
git stash pop      # Khôi phục thay đổi của bạn

4. Commit thường xuyên và nhỏ: commit theo từng tính năng nhỏ thay vì gộp nhiều thay đổi lại. Conflict nhỏ dễ giải quyết hơn conflict lớn.

5. Giao tiếp với team: thông báo khi bạn đang chỉnh sửa file quan trọng để tránh hai người cùng sửa một lúc.

Tổng kết

Conflict trong Git không đáng sợ — nó chỉ là Git đang nhờ bạn đưa ra quyết định. Quy trình giải quyết chỉ có 3 bước:

  1. Mở file conflict, chỉnh sửa để giữ code đúng, xóa markers
  2. git add file đã giải quyết
  3. git commit để hoàn tất

Xem thêm: Git Branch: Cách tạo và quản lý nhánh | Các lệnh Git cơ bản | Git là gì?

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.