Git diff -w bỏ qua khoảng trắng chỉ ở đầu và cuối dòng


366

Tôi thích sử dụng git diff -wđể bỏ qua sự khác biệt khoảng trắng. Nhưng, tôi chỉ nhận thấy rằng nó bỏ qua sự khác biệt ngay cả khoảng trắng ở giữa dòng. Làm thế nào tôi chỉ có thể bỏ qua sự khác biệt về khoảng trắng xuất hiện ở đầu (^) hoặc cuối ($) của dòng?


31
Được coi là sử dụng git diff -bthay thế?
Jonas Byström

5
"-b - thay đổi không gian thay đổi Bỏ qua các thay đổi về số lượng khoảng trắng. Điều này bỏ qua khoảng trắng ở cuối dòng và coi tất cả các chuỗi khác của một hoặc nhiều ký tự khoảng trắng là tương đương."
mowwwalker

Câu trả lời:


450

Để sử dụng cuối dòng:

git diff --ignore-space-at-eol

Thay vì những gì bạn đang sử dụng hiện tại:

git diff -w (--ignore-all-space)

Để bắt đầu dòng ... bạn sẽ hết may mắn nếu bạn muốn một giải pháp tích hợp.

Tuy nhiên, nếu bạn không ngại bị bẩn tay thì có một miếng vá khá cũ trôi nổi ở đâu đó có thêm hỗ trợ cho "--ignore-space-at-sol".


Cảm ơn, nhưng nó không hoạt động nếu bạn định cấu hình diff cho một công cụ bên ngoài .. có ý tưởng nào không?
adardesign

@adardesign, tôi nghĩ rằng có lẽ sẽ phải được cấu hình trong công cụ bên ngoài. Tôi không chắc chắn nếu có bất cứ điều gì git có thể làm để trình bày khác biệt mà không thay đổi khoảng trắng ... có thể sai; git khá mạnh ...
johnny

Điều đó thật tuyệt khi được cấu hình theo mặc định. Ý tôi là -w hoặc -b hoặc --ignore-all-space. Có một cuộc thảo luận về nó tại stackoverflow.com/questions/7310033/ từ
Artyom

8
Tôi đồng ý với đề xuất -b, vì -w coi "abc def" và "abcdef" là như nhau, điều này hiếm khi tôi muốn!
Richard Wiseman

3

Đây là một câu hỏi cũ, nhưng vẫn thường xuyên được xem / cần thiết. Tôi muốn đăng để cảnh báo những độc giả như tôi rằng khoảng trắng như được đề cập trong câu hỏi của OP không giống với định nghĩa của Regex, để bao gồm các dòng mới, tab và ký tự khoảng trắng - Git yêu cầu bạn phải rõ ràng. Xem một số tùy chọn tại đây: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Như đã nêu, git diff -bhoặc git diff --ignore-space-changesẽ bỏ qua khoảng trắng ở cuối dòng. Nếu bạn muốn cài đặt đó là hành vi mặc định của mình, dòng sau sẽ thêm ý định đó vào tệp .gitconfig của bạn, vì vậy nó sẽ luôn bỏ qua khoảng trắng ở cuối dòng:

git config --global core.whitespace trailing-space

Trong trường hợp của tôi, tôi đã tìm thấy câu hỏi này bởi vì tôi quan tâm đến việc bỏ qua "sự khác biệt về khoảng trống vận chuyển", vì vậy tôi cần điều này:

git diff --ignore-cr-at-eolhoặc git config --global core.whitespace cr-at-eoltừ đây .

Bạn cũng có thể đặt nó làm mặc định cho repo đó bằng cách bỏ qua tham số --global và kiểm tra tệp cài đặt cho repo đó. Đối với sự cố CR tôi gặp phải, nó sẽ biến mất sau khi đăng ký nếu warncrlf hoặc autocrlf = true trong phần [core] của tệp .gitconfig.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.