Text vs Line vs Word vs Git Diff
Lần rà soát cuối 2026-04-27. Mở công cụ text-diff để so sánh hai chuỗi, tệp, hoặc khối dán trong trình duyệt bạn.
Bốn hương vị và mỗi loại dùng để làm gì
- Text diff (string diff). Đơn giản nhất. So sánh hai chuỗi hoặc hai khối văn bản từng ký tự. Đầu ra: các vị trí nơi chúng khác. Dùng cho "hai blob dán này có thực sự giống hệt nhau không?" - drift cấu hình JSON, thông báo lỗi trong ticket hỗ trợ, dòng log nên khớp.
- Line diff. Mặc định cho code. Coi mỗi dòng là đơn vị thay đổi. Đầu ra: dòng nào đã được thêm, xóa, hoặc sửa. Đầu ra "+" / "-" mà mọi công cụ code-review dùng. Mặc định mạnh khi nội dung cơ bản được cấu trúc theo dòng.
- Word diff. Dùng cho văn xuôi. Khi một câu thay đổi một từ duy nhất, line diff hiện cả câu hai lần (một lần - và một lần +). Word diff đánh dấu chỉ từ được thay đổi. Tốt hơn cho review biên tập và thay đổi nội dung.
- Git diff. Line diff cộng lịch sử kho. So sánh hai commit, hai branch, working-tree-vs-index, hoặc index-vs-HEAD. Thêm phát hiện file-mode, phát hiện rename, và xử lý tệp binary mà line diff đơn thuần thiếu. Được dùng trong luồng công việc kiểm soát phiên bản.
Khi nào line diff sai
Line diff thất bại khi chính các dòng là dài. Sửa một từ trong một dòng 200 ký tự và diff hiện cả dòng là xóa-và-thêm-lại - không có tín hiệu về từ nào thực sự thay đổi. Tương tự cho JSON một dòng hoặc code minified nơi mọi thứ ở trên một dòng duy nhất.
Hai cách sửa: re-format đầu vào trước (pretty-print JSON, chạy một bộ định dạng code), sau đó line diff. Hoặc chuyển sang word diff, xử lý dòng dài đúng. Hầu hết công cụ online cung cấp cả hai - chọn dựa trên liệu đầu vào có được cấu trúc theo dòng tự nhiên không.
Khi nào git diff thêm giá trị so với line diff
Ba thứ git theo dõi mà line diff đơn thuần không thể:
- Đổi tên tệp. Đổi một tệp từ
src/foo.jssangsrc/bar.js. Line diff hiện là "tất cả foo.js đã xóa, tất cả bar.js đã thêm". Git diff với phát hiện rename hiện là "foo.js đổi tên sang bar.js" cộng bất kỳ thay đổi nội dung thực sự. - Thay đổi mode tệp. Đánh dấu một script là thực thi được hiện lên trong git diff là một thay đổi mode không delta nội dung. Line diff bỏ qua hoàn toàn.
- Thay đổi tệp binary. Git diff nói "binary files differ" mà không cố gắng render byte. Line diff tạo đầu ra không đọc được cho bất kỳ đầu vào binary.
Chọn cái đúng cho tác vụ
So sánh hai chuỗi dán: text diff. Review thay đổi code: line diff hoặc git diff nếu bạn có bối cảnh kho. Review chỉnh sửa copy: word diff. Điều tra một drift bất ngờ trong sản xuất: text diff trước để xác nhận khác biệt tồn tại, sau đó line diff để định vị. Công cụ text-diff chế độ ba cái đầu; git diff sống trong chính git. Bộ developer đầy đủ ở trung tâm công cụ developer.
Đọc thêm
- Công cụ so sánh trực tuyến - so sánh hai văn bản song song - hướng dẫn từng bước chạy diff trên trình duyệt: dán dữ liệu vào, đọc kết quả tô sáng, chọn chế độ line, word, hoặc text.