cảnh báo: LF sẽ được thay thế bằng CRLF.
Tùy thuộc vào trình chỉnh sửa bạn đang sử dụng, một tệp văn bản với LF sẽ không cần thiết được lưu bằng CRLF: các trình chỉnh sửa gần đây có thể duy trì kiểu eol. Nhưng cài đặt cấu hình git đó khăng khăng thay đổi những ...
Chỉ cần đảm bảo rằng (như tôi khuyên ở đây ):
git config --global core.autocrlf false
Bằng cách đó, bạn tránh mọi chuyển đổi tự động và vẫn có thể chỉ định chúng thông qua .gitattributes
tệp và core.eol
chỉ thị .
windows git "LF sẽ được thay thế bằng CRLF"
Đây có phải là đuôi cảnh báo không?
Không: bạn đang ở trên Windows và git config
trang trợ giúp có đề cập đến
Sử dụng cài đặt này nếu bạn muốn có CRLF
kết thúc dòng trong thư mục làm việc của mình mặc dù kho lưu trữ không có kết thúc dòng được chuẩn hóa.
Như được mô tả trong " git thay thế LF bằng CRLF ", nó chỉ xảy ra khi thanh toán (không phải cam kết), với core.autocrlf=true
.
repo
/ \
crlf->lf lf->crlf
/ \
Như đã đề cập trong câu trả lời của XiaoPeng , cảnh báo đó giống như:
cảnh báo: (Nếu bạn kiểm tra nó / hoặc sao chép vào thư mục khác với core.autocrlf
cấu hình hiện tại của bạn ,) LF sẽ được thay thế bằng CRLF
Tệp sẽ có kết thúc dòng gốc trong thư mục làm việc (hiện tại) của bạn.
Như đã đề cập trong git-for-windows/git
số 1242 :
Tôi vẫn cảm thấy tin nhắn này khó hiểu, tin nhắn có thể được mở rộng để bao gồm một lời giải thích tốt hơn về vấn đề này, ví dụ: "LF sẽ được thay thế bằng CRLF file.json
sau khi xóa tệp và kiểm tra lại".
Lưu ý: Git 2.19 (Tháng 9 năm 2018), khi sử dụng core.autocrlf
, cảnh báo "LF sẽ bị thay thế bởi CRLF" hiện bị loại bỏ .
Như quaylar bình luận đúng , nếu có một chuyển đổi trên cam kết, nó là LF
chỉ.
Cảnh báo cụ thể đó " LF will be replaced by CRLF
" đến từ convert.c # check_safe_crlf () :
if (checksafe == SAFE_CRLF_WARN)
warning("LF will be replaced by CRLF in %s.
The file will have its original line endings
in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
die("LF would be replaced by CRLF in %s", path);
Nó được gọi bởi convert.c#crlf_to_git()
, chính nó được gọi bởi convert.c#convert_to_git()
, chính nó được gọi bởi convert.c#renormalize_buffer()
.
Và cuối cùng renormalize_buffer()
chỉ được gọi bởi merge-recursive.c#blob_unchanged()
.
Vì vậy, tôi nghi ngờ việc chuyển đổi này chỉ xảy ra git commit
nếu cam kết là một phần của quy trình hợp nhất.
Lưu ý: với Git 2.17 (quý 2 năm 2018), việc dọn mã sẽ thêm một số giải thích.
Xem cam kết 8462ff4 (ngày 13 tháng 1 năm 2018) của Torsten Bögershausen ( tboegi
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 9bc89b1 , ngày 13 tháng 2 năm 2018)
convert_to_git (): safe_crlf / checksafe trở thành int conv_flags
Khi gọi convert_to_git()
, checksafe
tham số đã xác định điều gì sẽ xảy ra nếu chuyển đổi EOL ( CRLF --> LF --> CRLF
) không làm tròn một cách sạch sẽ.
Ngoài ra, nó cũng được xác định nếu kết thúc dòng nên được tái chuẩn hóa ( CRLF --> LF
) hoặc giữ nguyên như vậy.
checksafe là một safe_crlf
enum với các giá trị sau:
SAFE_CRLF_FALSE: do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL: die in case of EOL roundtrip errors
SAFE_CRLF_WARN: print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF: keep all line endings as they are
Lưu ý rằng hồi quy được giới thiệu trong 8462ff4 (" convert_to_git()
:
safe_crlf/checksafe
trở thành int conv_flags
", 2018-01-13, Git 2.17.0) trở lại trong chu kỳ Git 2.17 khiến việc autocrlf
viết lại tạo ra thông báo cảnh báo
mặc dù đã cài đặtsafecrlf=false
.
Xem cam kết 6cb0912 (04 tháng 6 năm 2018) của Anthony Sottile ( asottile
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 8063ff9 , ngày 28 tháng 6 năm 2018)