Với Git, làm cách nào để tắt chương trình LF LF sẽ được thay thế bằng cảnh báo CRLFật


153

Với Git, khi sử dụng autocrlf = truecờ, cảnh báo vẫn được đưa ra khi kết thúc dòng được thay đổi.

Tôi hiểu cảnh báo là gì và làm cách nào để tắt cờ kết thúc dòng, nhưng làm cách nào để tắt cảnh báo?


Tất cả các câu trả lời ở đây đã lỗi thời - sau khi git giới thiệu gitattribut. Safecrlf là bạn autocrlf của bạn phải không! Xin vui lòng xem câu trả lời của tôi
Rusi

Câu trả lời:


279

Bạn có thể tắt cảnh báo với

git config --global core.safecrlf false

(Điều này sẽ chỉ tắt cảnh báo, không phải chính chức năng.)


sẽ tắt cảnh báo ngăn git thay thế lf bằng crlf? @ đồng bộ
viện trợ

3
@aidonsnous Từ git docs : Nếu core.safecrlf được đặt thành "true" hoặc "warn", git sẽ xác minh xem chuyển đổi có thể đảo ngược cho cài đặt hiện tại của core.autocrlf không. Đối với "true", git từ chối chuyển đổi không thể đảo ngược; đối với "cảnh báo", git chỉ in cảnh báo nhưng chấp nhận chuyển đổi không thể đảo ngược. Nếu bạn không cần từ chối các chuyển đổi không thể đảo ngược, hãy đặt core.safecrlf thành sai để loại bỏ cảnh báo, nhưng vẫn tự động chuyển đổi.
Danny Libin

5

Bạn nên sử dụng core.autocrlf inputcore.eol input. Hoặc chỉ không để git thay đổi kết thúc dòng với autocrlf falsevà loại bỏ việc làm nổi bật các crlfs trong diffs, v.v.core.whitespace cr-at-eol .

Hi vọng điêu nay co ich


Thông thường, bạn muốn các tập lệnh BAT của bạn kết thúc và được cam kết với CRLF và tập lệnh SH của bạn với LF.
Sandburg

0

Bạn đang tìm kiếm core.whitespacetùy chọn (xem git config --helpđể biết chi tiết).

Bạn có thể đặt tùy chọn này như vậy:

$ git config core.whitespace cr-at-eol

0

Tôi đã sử dụng cách này:

Lưu các tệp hiện tại của bạn trong Git, để không có tác phẩm nào của bạn bị mất.

git add . -u
git commit -m "Saving files before refreshing line endings"

Xóa mọi tệp khỏi chỉ mục của Git.

git rm --cached -r .

Viết lại chỉ mục Git để chọn tất cả các kết thúc dòng mới.

git reset --hard

Thêm tất cả các tệp đã thay đổi của bạn trở lại và chuẩn bị chúng cho một cam kết. Đây là cơ hội để bạn kiểm tra tập tin nào, nếu có, không thay đổi.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Cam kết thay đổi kho lưu trữ của bạn.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/deals-with-line-endings/


13
Tôi tin rằng OP đã cố gắng tránh nhìn thấy những cảnh báo đó nữa. Không bình thường hóa tất cả các kết thúc dòng.
Mike Cluck

git rm --cached -r . && git reset --harddường như thực hiện mánh khóe, cảm ơn
Shanimal

0

Thật thú vị, tôi đã áp dụng cả hai cấu hình như được giải thích ở đây và tệp .gitconfig của tôi chứa 2 dòng này:

[core]
       autocrlf = false
       whitespace = cr-at-eol

Tuy nhiên, tôi đã nhận được cảnh báo. Bây giờ chỉ để thử tôi đã nhận xét cả hai dòng và cảnh báo thực sự biến mất. Không biết tại sao tôi lại đặt chúng ở vị trí đầu tiên tuy nhiên ...


0

Đặt "core.safecrlf false" hoạt động. Tuy nhiên, sau khi tôi thay đổi giá trị thành 'true', đầu ra thay đổi từ 'cảnh báo' thành 'gây tử vong' như hiển thị bên dưới.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

Trong git gần đây tốt hơn để sử dụng gitattribut hơn autocrlf. Xem câu trả lời của tôi . Tất cả các câu trả lời (trên q này) đều cũ và lỗi thời
Rusi
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.