2010-07-30 44 views
17

Tôi đã vô tình đặt một số khoảng trắng trong my initial commit - nó hiện lên màu đỏ trong git diff --color. Cách tốt nhất để loại bỏ khoảng trắng hiện tại là gì và làm cách nào để tránh điều này xảy ra lần nữa?git - cắt khoảng trắng

Tôi không nhất thiết phải tìm kiếm một lệnh được xây dựng trong git. Bất kỳ chương trình bên ngoài nào có sẵn miễn phí trên Ubuntu cũng sẽ được chào đón.

+0

tuyệt vời Tôi không biết git có tính năng này. – xenoterracide

+1

Xem [câu hỏi này] (http://stackoverflow.com/q/591923/470844). – ntc2

Trả lời

24

Để cắt dấu khoảng trắng trên tất cả các file trong thư mục hiện, sử dụng:

sed -i 's/[[:space:]]*$//' * 

Để cảnh báo về lỗi khoảng trắng trong tương lai (cả dấu không giangian trước khi các tab), và để khắc phục lỗi khoảng trắng trong các bản vá lỗi, thêm đoạn mã sau vào tập tin gitconfig của bạn:

[core] 
    whitespace = trailing-space,space-before-tab 
[apply] 
    whitespace = fix 
+0

điều này là tốt cho việc bảo vệ chống lại các khoảng trắng nhưng OP hỏi về việc xóa khoảng trống mà chúng đã cam kết – stevejpurves

+0

@stevejpurves: Dòng trên cùng giải thích cách xóa khoảng trắng theo sau bằng cách sử dụng * sed *. Theo như tôi biết, không có lệnh git nào giống như vậy. – Zaz

12

core.whitespace chỉ thị git để cờ vấn đề khoảng trắng chắc chắn:

  • trailing-space cảnh báo về khoảng trắng ở phần cuối của một dòng hoặc cuối của một tập tin
  • space-before-tab cảnh báo khi có một không gian trước khi một tab sử dụng cho thụt lề

apply.whitespace được sử dụng khi áp dụng bản vá. Nó kiểm tra các lỗi khoảng trắng (những cái được liệt kê ở trên, trong core.whitespace) và áp dụng các miếng vá sau khi cố gắng sửa chữa chúng (ví dụ, loại bỏ chúng).

Các tùy chọn này đi trong ~/.gitconfig - đó là một tập tin .gitconfig tại thư mục gốc của thư mục người dùng của bạn ở nhà (thường /home/user/.gitconfig trên Linux, /Users/user/.gitconfig trên Mac OS X, và tôi không biết nơi trên Windows nhưng tôi cho rằng ở đâu đó trong số C:\Documents and Settings\user).

+0

Điều đó giải thích các cài đặt khoảng trắng (+1 cho điều đó) nhưng không trả lời câu hỏi "Làm cách nào để loại bỏ khoảng trống hiện tại?". Tôi đã cập nhật bài đăng gốc để rõ ràng. – Zaz

0

Và để cắt các khoảng trắng khỏi tất cả các tệp đệ quy từ tất cả các thư mục phụ, điều này có thể được sử dụng.

tìm ./* -type f -exec sed -i 's/[[: không gian:]] * $ //' {} \;

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