2010-10-13 23 views
46

Trình chỉnh sửa của tôi đang thay đổi kết thúc dòng của các tệp nguồn của tôi. Khi tôi làm git diff, tôi thấy cùng một dòng hai lần - một lần với - và một lần với + - không có sự khác biệt rõ ràng.git diff - hiển thị cho tôi các thay đổi kết thúc dòng?

Làm cách nào để nhận được git diff để cho tôi biết thay đổi này thực sự là gì?

Trả lời

5

Công cụ tìm khác biệt đồ họa sẽ cho bạn thấy sự thay đổi tốt hơn - thử git difftool.

Sử dụng meld và đặt tùy chọn để hiển thị khoảng trắng. (Edit -> Preferences -> Show Whitespace.)

Các công cụ đồ họa khác có thể có các tùy chọn tương tự - @ Câu trả lời + nhận xét của Cotton cho bạn biết cách làm điều này với vimdiff.

+0

Công cụ tìm khác biệt đồ họa có thể không khả dụng.Câu trả lời của @ paul-whittaker sẽ làm việc trong bối cảnh ngụ ý bởi câu hỏi (một số thiết bị đầu cuối). – beOn

44

Trước tiên, hãy chắc chắn rằng bạn đang sử dụng đầu ra màu (ví dụ với git diff --color) và rằng bạn đã kích hoạt làm nổi bật khoảng trắng với (ví dụ)

git config color.diff.whitespace "red reverse" 

Điều này có thể không hoạt động trong mọi trường hợp, tuy nhiên, như git không xuất hiện để làm nổi bật khoảng trắng theo sau cho bị xóa dòng. Để xem khoảng trắng mà bạn đã xóa, chỉ cần sử dụng

git diff -R 

để đặt khoảng trống trên mặt 'được thêm vào' của so sánh, nơi nó được đánh dấu.

Để biết thêm chi tiết, hãy xem câu trả lời tại this SO question.

+0

Đây là câu trả lời thực tế, mặc dù tôi phải thừa nhận nó buồn cười khi thấy không gian màu đỏ trên dòng mới thay thế. Cảm ơn! – zeh

5
git diff --ws-error-highlight=new,old 

làm nổi bật chênh lệch khoảng trắng trong các dòng đã thay đổi.

6

Một cách để thấy những thay đổi khoảng trắng là để làm một nhân vật-by-nhân vật "từ diff" với

git diff --color --word-diff-regex=. 

này nhấn mạnh tất cả các khoảng trắng thay đổi ở khắp mọi nơi trong dòng. Khoảng trắng đã xóa được bao bọc trong [--] và thêm khoảng trống trong {++}.

Ngoài ra, như suggested by Alex

git diff --color --ws-error-highlight=new,old 

nổi bật tất cả thay đổi khoảng trắng tại đầu của dòng.

7

Bạn có thể thấy sự khác biệt cuối dòng với lệnh sau.

git diff | cat -v 

Sau đó, "^ M" được in cho kết thúc CRLF (DOS), không có gì cho kết thúc LF (Unix).

Rõ ràng git diff đang làm điều đúng, in các ký tự CR và LF cho kết thúc CRLF. Nhưng vì CR được tiêu thụ bởi bảng điều khiển, chúng tôi không thể nhìn thấy nó. Bằng cách sử dụng cat -v, chúng ta có thể làm cho nó hiển thị.

Các vấn đề liên quan