Hãy nói rằng tôi có hai tập tin. Cái đầu tiên có nội dung:
line 1
foo
line 2
line 1
bar
line 2
Và phần thứ hai có một phần mới được chèn ở giữa, vì vậy nó trông như thế này:
line 1
foo
line 2
line 1
new text
line 2
line 1
bar
line 2
Bây giờ, khi tôi thực hiện "diff -u", tôi nhận được đầu ra như thế này:
--- file1 2013-06-25 16:27:43.170231844 -0500
+++ file2 2013-06-25 16:27:59.218757056 -0500
@@ -1,7 +1,11 @@
line 1
foo
line 2
line 1
+new text
+line 2
+
+line 1
bar
line 2
Điều này không phản ánh đúng rằng khổ thơ giữa đã được chèn - thay vào đó, nó trông giống như khổ thơ thứ hai đã được thay đổi, và một đoạn mới được thêm vào cuối (điều này là do thuật toán bắt đầu ở dòng khác nhau đầu tiên).
Có cách nào để lấy diff (bằng chính nó, hoặc sử dụng git diff) để hiển thị đầu ra này thay thế không?
--- file1 2013-06-25 16:27:43.170231844 -0500
+++ file2 2013-06-25 16:27:59.218757056 -0500
@@ -1,7 +1,11 @@
line 1
foo
line 2
+
+line 1
+new text
+line 2
line 1
bar
line 2
Đây chủ yếu là một vấn đề khi tạo một bản vá để ai đó xem xét, trong đó một chức năng mới được chèn vào một nhóm các chức năng tương tự. Hành vi mặc định không phản ánh những gì thực sự thay đổi.
--unified 5
hoặc giá trị lớn hơn?
sdiff file1 file2
có thể đây là những gì bạn đang tìm kiếm.