Tôi đang cố lấy git để không thay đổi bất kỳ kết thúc dòng nào cho bất kỳ hoạt động nào. Thật không may, nó dường như làm như vậy không có vấn đề gì. Tôi đã giảm nó xuống trường hợp thử nghiệm sau, có nhiều cơ chế khác nhau để vô hiệu hóa hành vi này mà tôi có thể tìm thấy.
- Bắt đầu với hai máy (máy tính Windows = A, máy tính Linux = B)
- Trên cả hai máy:
git config --global core.autocrlf false - Trên cả hai máy:
git config --global core.eol crlf(chỉ trong trường hợp)
- Tạo kho lưu trữ mới trên A. Từ một thư mục trống:
git init --shared(sau đó bỏ ẩn.gitthư mục đã tạo )- Tạo một tệp mới
.gitignoretrong kho lưu trữ - Tạo một tệp mới
.gitattributestrong kho lưu trữ với một dòng:* -text git add ., sau đógit commit -m "initial commit"để làm việc xung quanh, ví dụ như điều này .git branch master_recv- Thêm điều khiển từ xa
- Tạo một tệp mới
document.txttrong kho chứa CRLF - Cam kết:,
git add -Asau đógit commit -m "<something>" - Lưu ý rằng A
document.txtvẫn chứa CRLF (và xóa nó và đặt lại với--hardtrả về phiên bản vẫn có CRLF)
- SCP toàn bộ thư mục vào máy tính B
- Thêm tệp mới
new filechứa CRLF - Cam kết:,
git add -Asau đógit commit -m "<something>" - Lưu ý rằng B's
document.txtvà B'snew fileđều vẫn chứa CRLF
- Kéo chủ nhân của B đến A:
git pull <remote> master:master_recv - A
document.txtđã thay đổi thành LF. Tệp được thêm vàonew filecũng chứa LF.
Sự cố không xảy ra nếu B là máy Windows.


core.autocrlfluôn luôn được sai? Có vẻ như bạn đã có\nkết thúc dòng trong kho lưu trữ của mình? Không có cài đặt nào để thay đổi\ntrong kho lưu trữ của bạn thành\r\ntrong thư mục làm việc của bạn.