Git ile “LF yerine CRLF geçecek” uyarısını nasıl kapatabilirim?


153

Git ile, autocrlf = truebayrağı kullanırken, satır sonları değiştirildiğinde hala bir uyarı verilir.

Uyarının ne için olduğunu ve satır sonu bayrağını nasıl kapatacağımı anlıyorum, ancak uyarının kendisini nasıl kapatabilirim?


Buradaki tüm cevaplar eskimiş - git gitattributes girdikten sonra. Safecrlf senin arkadaşın autocrlf değil! Lütfen cevabımı gör
Rusi

Yanıtlar:


282

İle uyarıyı kapatabilirsiniz.

git config --global core.safecrlf false

(Bu fonksiyonun kendisini değil, sadece uyarıyı kapatır.)


uyarının kapatılması git'in lf'yi crlf ile değiştirmesini engeller mi? @chronial
aidonsnous

3
@aidonsnous Git belgelerinden : core.safecrlf "true" ya da "warn" olarak ayarlanırsa git, geçerli core.autocrlf ayarı için dönüşümün geri döndürülebilir olup olmadığını doğrular. "True" için git geri döndürülemez dönüşümleri reddeder; "uyar" için git yalnızca bir uyarı yazdırır, ancak geri döndürülemez bir dönüşümü kabul eder. Geri döndürülemez dönüşümleri reddetmeniz gerekmiyorsa, core.safecrlf öğesini false olarak ayarlamak uyarıyı bastırır, ancak yine de otomatik olarak dönüşür.
Danny Libin

5

Sen kullanmalıdır core.autocrlf inputve core.eol input. Ya da autocrlf falsegit'in satır sonlarını hiç değiştirmesine izin vermeyin ve difl'lerdeki crlfs, vb.core.whitespace cr-at-eol . .

Bu yardımcı olur umarım


Genellikle, BAT komut dosyalarınızın sona ermesini ve CRLF ile ve SH komut dosyanızın LF ile tamamlanmasını istersiniz.
Sandburg

0

core.whitespaceSeçeneği arıyorsunuz ( git config --helpayrıntılar için bkz .).

Bu seçeneği şu şekilde ayarlayabilirsiniz:

$ git config core.whitespace cr-at-eol

0

Bu şekilde kullandım:

Geçerli dosyalarınızı Git'e kaydedin, böylece çalışmalarınızın hiçbiri kaybolmaz.

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

Git'in dizinindeki her dosyayı kaldırın.

git rm --cached -r .

Tüm yeni satır sonlarını almak için Git dizinini yeniden yazın.

git reset --hard

Değiştirilen tüm dosyalarınızı geri ekleyin ve bir taahhüt için hazırlayın. Bu, varsa hangi dosyaların değiştirilmediğini inceleme şansınızdır.

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

Deponuzda değişiklikleri yapın.

git commit -m "Normalize all the line endings"

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


13
OP'nin artık bu uyarıları görmekten kaçınmaya çalıştığına inanıyorum. Tüm satır sonlarını normalleştirmez.
Mike Cluck

git rm --cached -r . && git reset --hardhile yapmak gibi görünüyor, teşekkürler
Shanimal

0

Funnily, burada açıklandığı gibi her iki yapılandırmayı uygulamıştım ve .gitconfig dosyamda şu 2 satır vardı:

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

Yine de uyarıyı aldım. Şimdi sadece denemek için her iki satırı da yorumladım ve uyarı aslında kayboldu. Ancak onları neden ilk sıraya koyduğum hakkında hiçbir fikrim yok ...


0

"Core.safecrlf false" ayarı çalışır. Ancak, değeri 'true' olarak değiştirdikten sonra çıktı, aşağıda gösterildiği gibi 'uyarı' dan 'ölümcül' olarak değişir.

$ 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

$

Yakın zamanda git autocrlf yerine gitattributes kullanmak daha iyidir. Cevabımı gör . Tüm cevaplar (bu q) eski ve eski
Rusi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.