Dengan Git, bagaimana cara mematikan peringatan "LF akan diganti oleh CRLF"

153

Dengan Git, saat menggunakan autocrlf = truebendera, peringatan masih diberikan ketika akhir baris diubah.

Saya mengerti untuk apa peringatan itu, dan bagaimana cara mematikan flag akhir baris, tetapi bagaimana cara mematikan peringatan itu sendiri?

dikirim-hil
sumber
Semua jawaban di sini sudah usang - setelah git diperkenalkan gitattributes. Safecrlf adalah teman Anda autocrlf bukan! Silakan lihat jawaban saya
Rusi

Jawaban:

279

Anda dapat mematikan peringatan dengan

git config --global core.safecrlf false

(Ini hanya akan mematikan peringatan, bukan fungsi itu sendiri.)

Kronologis
sumber
akan mematikan peringatan untuk mencegah git mengganti lf dengan crlf? @ sinkron
aidonsnous
3
@aidonsnous Dari git docs : Jika core.safecrlf disetel ke "true" atau "warn", git memverifikasi apakah konversi dapat dibalik untuk pengaturan core.autocrlf saat ini. Untuk "true", git menolak konversi yang tidak dapat diubah; untuk "peringatan", git hanya mencetak peringatan tetapi menerima konversi yang tidak dapat diubah. Jika Anda tidak perlu menolak konversi yang tidak dapat diubah, menetapkan core.safecrlf ke false akan menekan peringatan, tetapi masih otomatis mengonversi.
Danny Libin
5

Anda harus menggunakan core.autocrlf inputdan core.eol input. Atau jangan biarkan git mengubah akhir baris sama sekali autocrlf falsedan singkirkan highlight dari crlfs di diffs, dll dengancore.whitespace cr-at-eol .

Semoga ini membantu

Adam Dymitruk
sumber
Biasanya, Anda ingin agar skrip BAT Anda berakhir dan dikomit dengan CRLF, dan skrip SH Anda dengan LF.
Sandburg
0

Anda sedang mencari core.whitespaceopsi (lihatgit config --help detailnya).

Anda dapat mengatur opsi ini seperti:

$ git config core.whitespace cr-at-eol
Pat Notz
sumber
0

Saya menggunakan cara ini:

Simpan file Anda saat ini di Git, sehingga tidak ada pekerjaan Anda yang hilang.

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

Hapus setiap file dari indeks Git.

git rm --cached -r .

Tulis ulang indeks Git untuk mengambil semua akhiran baris baru.

git reset --hard

Tambahkan semua file Anda yang diubah kembali, dan persiapkan untuk komit. Ini adalah kesempatan Anda untuk memeriksa file mana, jika ada, yang tidak diubah.

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

Lakukan perubahan pada repositori Anda.

git commit -m "Normalize all the line endings"

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

Julia Shestakova
sumber
13
Saya percaya OP berusaha untuk menghindari melihat peringatan itu lagi. Tidak menormalkan semua akhir baris.
Mike Cluck
git rm --cached -r . && git reset --hardtampaknya melakukan trik, terima kasih
Shanimal
0

Lucunya, saya telah menerapkan kedua konfigurasi seperti dijelaskan di sini, dan file .gitconfig saya berisi 2 baris ini:

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

Namun saya mendapat peringatan itu. Sekarang hanya untuk mencoba saya mengomentari kedua baris dan peringatan itu benar-benar menghilang. Tidak tahu mengapa saya menempatkan mereka di tempat pertama namun ...

Jean-Michel Bernard
sumber
0

Pengaturan "core.safecrlf false" berfungsi. Namun, setelah saya mengubah nilainya menjadi 'benar' Outputnya berubah dari 'peringatan' menjadi 'fatal' seperti yang ditunjukkan di bawah ini.

$ 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

$
Park JongBum
sumber
Dalam git baru-baru ini lebih baik menggunakan gitattributes daripada autocrlf. Lihat jawaban saya . Semua jawaban (pada q ini) sudah tua dan usang
Rusi