Các thông báo này là do giá trị mặc định không chính xác core.autocrlftrên Windows.
Khái niệm autocrlflà xử lý chuyển đổi kết thúc dòng một cách minh bạch. Và nó làm được!
Tin xấu : giá trị cần phải được cấu hình bằng tay.
Tin tốt : chỉ nên thực hiện MỘT lần cho mỗi lần cài đặt git (cũng có thể cài đặt dự án).
Làm thế nào autocrlfcác công trình :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Ở đây crlf= điểm đánh dấu cuối dòng kiểu win, lf= unix-style (và mac osx).
(tiền osx crkhông bị ảnh hưởng cho bất kỳ ba tùy chọn nào ở trên)
Khi nào cảnh báo này hiển thị (trong Windows)
- autocrlf= truenếu bạn có kiểu unix lftrong một trong các tệp của mình (= RARELY),
- autocrlf= inputnếu bạn có kiểu win crlftrong một trong các tệp của mình (= gần như LUÔN),
- autocrlf= false- KHÔNG BAO GIỜ!
Cảnh báo này có ý nghĩa gì
Cảnh báo " LF sẽ được thay thế bằng CRLF " nói rằng bạn (có autocrlf= true) sẽ mất LF kiểu unix của bạn sau chu kỳ kiểm tra cam kết (nó sẽ được thay thế bằng CRLF theo kiểu cửa sổ). Git không mong đợi bạn sử dụng kiểu dáng unix dưới cửa sổ.
Cảnh báo " CRLF sẽ được thay thế bởi LF " nói rằng bạn (có autocrlf= input) sẽ mất CRLF theo kiểu cửa sổ của bạn sau một chu kỳ kiểm tra cam kết (nó sẽ được thay thế bằng kiểu unix kiểu unix). Đừng sử dụng inputdưới cửa sổ.
Một cách khác để cho thấy cách làm autocrlfviệc
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
trong đó x là CRLF (kiểu cửa sổ) hoặc LF (kiểu unix) và mũi tên là viết tắt của
file to commit -> repository -> checked out file
Làm thế nào để khắc phục
Giá trị mặc định cho core.autocrlfđược chọn trong quá trình cài đặt git và được lưu trữ trong gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig) trên toàn hệ thống . Ngoài ra còn có (xếp theo thứ tự sau):
- gitconfig "toàn cầu" (mỗi người dùng) được đặt tại ~/.gitconfig, nhưng một gitconfig
"toàn cầu" (trên mỗi người dùng) tại $XDG_CONFIG_HOME/git/confighoặc $HOME/.config/git/configvà
- "cục bộ" (mỗi repo) gitconfig tại .git/configthư mục làm việc.
Vì vậy, hãy viết git config core.autocrlfvào thư mục làm việc để kiểm tra giá trị hiện đang sử dụng và
- thêm autocrlf=falsevào giải pháp gitconfig # per-system trên toàn hệ thống
- git config --global core.autocrlf false # giải pháp cho mỗi người dùng
- git config --local core.autocrlf false # giải pháp cho mỗi dự án
Cảnh báo
- git configcài đặt có thể bị ghi đè bởi gitattributescài đặt.
- crlf -> lfchuyển đổi chỉ xảy ra khi thêm tệp mới, crlftệp đã tồn tại trong repo không bị ảnh hưởng.
Đạo đức (dành cho Windows):
- use core.autocrlf= truenếu bạn dự định sử dụng dự án này trong Unix (và không muốn định cấu hình trình soạn thảo / IDE của bạn để sử dụng kết thúc dòng unix),
- use core.autocrlf= falsenếu bạn dự định chỉ sử dụng dự án này trong Windows ( hoặc bạn đã định cấu hình trình soạn thảo / IDE của mình để sử dụng các kết thúc dòng unix),
- không bao giờ sử dụng core.autocrlf= inputtrừ khi bạn có lý do chính đáng ( ví dụ: nếu bạn đang sử dụng các tiện ích unix dưới cửa sổ hoặc nếu bạn gặp phải các vấn đề về makefiles),
PS Chọn gì khi cài đặt git cho Windows?
Nếu bạn sẽ không sử dụng bất kỳ dự án nào trong Unix, đừng đồng ý với tùy chọn đầu tiên mặc định. Chọn cái thứ ba ( Thanh toán nguyên trạng, cam kết nguyên trạng ). Bạn sẽ không thấy tin nhắn này. Không bao giờ.
PPS Sở thích cá nhân của tôi là cấu hình trình soạn thảo / IDE để sử dụng các kết thúc kiểu Unix và cài đặt core.autocrlfthành false.