← Tất cả bài viết

So sánh hai đoạn văn bản: hiểu cách text diff hoạt động

22/07/2026

Mỗi khi bạn xem git diff hay review pull request, một thuật toán so sánh (diff) đang tìm ra khác biệt tối thiểu giữa hai phiên bản văn bản. Hiểu cách nó nghĩ giúp bạn đọc diff nhanh hơn.

Diff làm gì?

Cho hai đoạn văn bản A và B, diff tìm chuỗi con chung dài nhất (Longest Common Subsequence) rồi suy ra tập thao tác ít nhất để biến A thành B: giữ nguyên, thêm dòng, xoá dòng.

Đọc ký hiệu diff

  • Dòng bắt đầu bằng +: được thêm vào ở phiên bản mới
  • Dòng bắt đầu bằng -: bị xoá khỏi phiên bản cũ
  • Dòng không có dấu: giữ nguyên (context) để định vị
  • Một dòng bị sửa hiển thị thành một xoá + một thêm

Diff theo dòng vs theo ký tự

Diff mặc định so theo dòng — nhanh và phù hợp code. Với câu văn dài chỉ đổi vài chữ, diff theo từ/ký tự (word-level) trực quan hơn vì tô sáng đúng phần thay đổi thay vì báo cả dòng.

Mẹo giảm nhiễu khi diff

  • Bỏ qua khác biệt khoảng trắng khi format không quan trọng
  • Định dạng (format) cả hai bên trước khi diff để khác biệt thật nổi lên, không lẫn với khác biệt định dạng
  • Chia commit nhỏ để mỗi diff dễ đọc

👉 Dùng thử công cụ liên quan trên dev-hub: Text Diff — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.