Sáp nhập mà không có xung đột khoảng trắng


179

Tôi đã gặp sự cố khi tôi có một cam kết lớn thay đổi khoảng một nghìn dòng mã, xóa khoảng trắng khỏi cuối dòng và xóa khoảng trắng trước các tab.

Ngoài ra còn có khoảng 50 yêu cầu kéo cho dự án này, tất cả sẽ có xung đột khi cam kết của tôi được hợp nhất. Có cách nào mà git có thể được thiết lập để khi hợp nhất các cam kết trong tương lai, nó sẽ bỏ qua các xung đột trong đó một trong số chúng chỉ là thay đổi khoảng trắng?

Tự sửa đổi git hoặc sử dụng công cụ của bên thứ ba là không thể, nhưng sử dụng hook là ổn.


Bản sao có thể có của tai ương khoảng trắng git
Cees Timmerman

Câu trả lời:


246
 git merge -Xignore-all-space

Hoặc (chính xác hơn)

 git merge -Xignore-space-change

nên đủ để bỏ qua tất cả các xung đột liên quan đến không gian trong quá trình hợp nhất.

Xem git diff :

--ignore-space-change

Bỏ qua những 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.

--ignore-all-space

Bỏ qua khoảng trắng khi so sánh các dòng.
Điều này bỏ qua sự khác biệt ngay cả khi một dòng có khoảng trắng trong đó dòng khác không có.

ks1322 thêm vào các ý kiến ​​một lời khuyên tốt:

Rất đáng để hợp nhất --no-commitvà xem xét việc hợp nhất trước khi cam kết thực tế .


Các OP Callum Macrae báo cáo rằng, trong trường hợp đó, việc hợp nhất tiến hành không bị gián đoạn, và các dấu không gian chứa trong các bản vá lỗi yêu cầu kéo được áp dụng cho các tập tin địa phương.
Tuy nhiên, OP sử dụng móc nối trước, đảm nhận các khoảng trống ở trên.
(Tôi cho rằng một chút tương tự như cái này , cũng được tham khảo ở đây ).


Móc cam kết trước của OP được tham chiếu tại đây :

Ngoài việc xóa khoảng trắng theo sau, nó sẽ xóa một đến ba khoảng trắng trước các tab (tôi có chiều rộng tab được đặt thành 4) và thêm EOL.
Tôi đã có báo cáo rằng mã thêm EOL sẽ xóa tệp trong windows, nhưng không thể sao chép nó.


1
Từ các thử nghiệm của tôi cho đến nay, có vẻ như nó loại bỏ tất cả các thay đổi khoảng trắng trong tệp. Tuy nhiên, bây giờ tôi đang sử dụng hook pre-commit để xóa khoảng trắng đuôi để nó không thành vấn đề.
callumacrae

1
@CallumMacrae: ok, và cảm ơn bạn đã phản hồi. Một lần nữa, tôi đã thêm liên kết của bạn trong câu trả lời để dễ nhìn hơn.
VonC

1
git merge -Xignore-space-change- tốt, tôi có thể nói chắc chắn này không làm việc ... . Một phần của khoảng trắng tôi đang cố gắng loại bỏ vẫn còn. Git hoàn toàn hút.
jww

1
Rất đáng để hợp nhất --no-commitvà xem xét việc hợp nhất trước khi cam kết thực tế.
ks1322

1
-Xignore-all-space dường như không làm gì về khoảng trắng và - thay đổi không gian thay đổi không được công nhận là một tùy chọn của git
Preza8
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.