Các thông báo này là do giá trị mặc định không chính xác core.autocrlf
trên Windows.
Khái niệm autocrlf
là 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 autocrlf
cá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 cr
khô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
= true
nếu bạn có kiểu unix lf
trong một trong các tệp của mình (= RARELY),
- autocrlf
= input
nếu bạn có kiểu win crlf
trong 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 input
dưới cửa sổ.
Một cách khác để cho thấy cách làm autocrlf
việ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/config
hoặc $HOME/.config/git/config
và
- "cục bộ" (mỗi repo) gitconfig tại .git/config
thư mục làm việc.
Vì vậy, hãy viết git config core.autocrlf
vào thư mục làm việc để kiểm tra giá trị hiện đang sử dụng và
- thêm autocrlf=false
và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 config
cài đặt có thể bị ghi đè bởi gitattributes
cài đặt.
- crlf -> lf
chuyển đổi chỉ xảy ra khi thêm tệp mới, crlf
tệp đã tồn tại trong repo không bị ảnh hưởng.
Đạo đức (dành cho Windows):
- use core.autocrlf
= true
nế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
= false
nế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
= input
trừ 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.autocrlf
thành false
.