So sánh văn bản
So sánh hai văn bản theo từng dòng và thấy rõ những gì đã đổi.
Hai văn bản được so sánh ngay trong trình duyệt của bạn. Không bên nào được tải lên, nên dùng được cho hợp đồng, cấu hình và nhật ký.
Hai phiên bản của cùng một thứ và cảm giác lấn cấn rằng chúng không giống nhau: một tệp cấu hình hôm qua còn chạy, một điều khoản hợp đồng ai đó vừa sửa mà không nói sửa chỗ nào, nhật ký của một máy đang lỗi đặt cạnh nhật ký của một máy đang chạy tốt. Đọc song song rồi hy vọng mắt bắt được khác biệt vừa chậm vừa không đáng tin, nhất là khi khác biệt chỉ là một ký tự.
Tìm hiểu thêm về So sánh văn bản
Công cụ này so sánh từng dòng và đánh dấu dòng nào được thêm, dòng nào bị xoá, dòng nào giữ nguyên. Nó dùng thuật toán Myers — cách git vẫn dùng — để tìm tập thay đổi nhỏ nhất biến văn bản này thành văn bản kia. Điều đó quyết định khả năng đọc: một phép so sánh ngây thơ, gặp chỗ lệch đầu tiên là bó tay, sẽ đánh dấu toàn bộ phần còn lại là đã thay đổi, và như vậy thì chẳng nói lên điều gì.
Có ba tuỳ chọn quyết định thế nào bị tính là khác biệt. Bỏ qua khoảng trắng sẽ giấu đi việc thụt lề lại, đúng thứ bạn cần khi ai đó vừa chạy trình định dạng lên tệp. Bỏ qua hoa thường giấu đi cách viết hoa, hữu ích khi so các khoá hay định danh. Bỏ qua dòng trống giấu đi khoảng cách giữa các đoạn. Mỗi tuỳ chọn là một lựa chọn có chủ đích, và phần tóm tắt sẽ nói rõ khi hai văn bản giống nhau chỉ vì một tuỳ chọn đang bật.
Kết quả đọc được theo hai cách. Hai cột dễ đọc hơn với văn xuôi và khi cần phát hiện một khối bị di chuyển; kiểu gộp — định dạng mà `diff -u` cùng mọi nền tảng mã nguồn đều dùng — dễ đọc hơn với mã, và chép thẳng được vào một bản vá hay một bình luận review. Bản gộp cũng tải về được thành tệp `.diff` với phần đầu khối đúng chuẩn.
Cả hai văn bản đều ở lại trong trang này. Điều đó đáng nói thẳng ra, vì so sánh hai phiên bản của một tài liệu nhạy cảm đúng là trường hợp mà dùng công cụ so sánh trực tuyến là một ý tồi, và phần lớn chúng đều tải dữ liệu lên.
- So sánh từng dòng bằng thuật toán Myers, đúng thuật toán git dùng
- Chế độ hai cột và chế độ gộp, dòng thay đổi được ghép đối diện nhau
- Đếm số dòng thêm, xoá và giữ nguyên
- Tuỳ chọn bỏ qua khoảng trắng, hoa thường hoặc dòng trống, đều nói rõ
- Số dòng ngữ cảnh điều chỉnh được để bản gộp hiện nhiều hay ít tuỳ ý
- Sao chép bản diff gộp, hoặc tải về tệp .diff với phần đầu khối đúng chuẩn
- Dấu thay đổi là chữ chứ không chỉ là màu, nên chép đi vẫn còn nguyên nghĩa
- Phép so sánh lớn chạy ngoài luồng chính thay vì làm treo thẻ trình duyệt
Cách sử dụng
- 1Dán bản gốc vào ô bên trái.
- 2Dán bản đã sửa vào ô bên phải.
- 3Đọc kết quả đã đánh dấu: xanh là thêm, đỏ là xoá.
- 4Bật một tuỳ chọn bỏ qua nếu thay đổi định dạng đang lấn át thay đổi thật.
- 5Chuyển sang chế độ gộp để sao chép hoặc tải về bản diff dạng bản vá.
Câu hỏi thường gặp
Diff gộp là gì?
Đó là định dạng mà `diff -u`, git và mọi nền tảng mã nguồn đều tạo ra: dòng thay đổi có dấu + hoặc - ở đầu, bao quanh là vài dòng ngữ cảnh, kèm phần đầu ghi rõ mỗi khối trải trên những dòng nào. Nó dùng được như một bản vá.
Vì sao cả tệp bị đánh dấu là đã thay đổi?
Thường là do kiểu xuống dòng hoặc cách thụt lề bị đổi trên mọi dòng. Hãy bật "bỏ qua khoảng trắng" và xem những khác biệt thật có hiện ra không; nếu có thì tệp vừa bị định dạng lại.
Có so sánh được hai tệp thay vì văn bản dán vào không?
Hãy mở từng tệp bằng trình soạn thảo rồi dán nội dung vào đây. Đằng nào mọi thứ cũng ở lại trong trình duyệt, và dán vào thì không còn nghi ngờ gì về việc tệp nào đã được đọc.
Nó có chỉ ra từ nào đổi trong một dòng không?
Các dòng thay đổi được đặt đối diện nhau ở chế độ hai cột, nên một chỗ sửa vài từ rất dễ thấy. Bản thân phép so sánh ở mức dòng, và chính điều đó giữ cho nó nhanh trên tệp lớn.
Vì sao so sánh dữ liệu lớn lại phải bấm nút?
Thuật toán nhanh khi hai văn bản giống nhau và chậm khi hai văn bản lớn mà chẳng có gì chung. Vượt một ngưỡng kích thước, phép so sánh sẽ đợi bạn yêu cầu rồi chạy ở luồng nền, nhờ vậy trang vẫn mượt.