ด้วย Git ฉันจะปิดคำเตือน“ LF จะถูกแทนที่ด้วย CRLF” ได้อย่างไร


153

ด้วย Git เมื่อใช้การautocrlf = trueตั้งค่าสถานะคำเตือนจะยังคงได้รับเมื่อมีการเปลี่ยนแปลงบรรทัดสิ้นสุด

ฉันเข้าใจว่าคำเตือนมีไว้เพื่ออะไรและจะปิดการตั้งค่าสถานะสิ้นสุดบรรทัดได้อย่างไร แต่ฉันจะปิดคำเตือนได้อย่างไร


คำตอบทั้งหมดที่นี่ล้าสมัย - หลังจาก git แนะนำ gitattributes Safecrlf คือเพื่อนของคุณอัตโนมัติ autocrlf ไม่ได้! โปรดดูคำตอบของฉัน
Rusi

คำตอบ:


281

คุณสามารถปิดการเตือนด้วย

git config --global core.safecrlf false

(นี่จะเป็นการปิดคำเตือนเท่านั้นไม่ใช่ฟังก์ชันเอง)


การปิดคำเตือนจะป้องกันไม่ให้คอมไพล์แทนที่ lf ด้วย crlf หรือไม่ @chronial
aidonsnous

3
@aidonsnous จากgit docs : หาก core.safecrlf ถูกตั้งค่าเป็น "true" หรือ "warn" git จะตรวจสอบว่าการแปลงสามารถย้อนกลับได้สำหรับการตั้งค่าปัจจุบันของ core.autocrlf สำหรับ "true" git ปฏิเสธการแปลงกลับไม่ได้ สำหรับ "เตือน" git พิมพ์คำเตือนเท่านั้น แต่ยอมรับการแปลงกลับไม่ได้ หากคุณไม่ต้องการปฏิเสธการแปลงที่ไม่สามารถย้อนกลับได้ให้ตั้งค่า core.safecrlf เป็น false เพื่อยับยั้งการเตือน แต่ยังคงทำการแปลงโดยอัตโนมัติ
Danny Libin

5

คุณควรใช้และcore.autocrlf input core.eol inputหรือเพียงแค่จะไม่ปล่อยให้การเปลี่ยนแปลง Git ปลายเส้นที่ทั้งหมดที่มีautocrlf falseและได้รับการกำจัดของไฮไลท์ของ crlfs ใน diffs, ฯลฯ core.whitespace cr-at-eolด้วย

หวังว่านี่จะช่วยได้


โดยปกติแล้วคุณต้องการให้สคริปต์ BAT ของคุณสิ้นสุดและได้รับการยอมรับด้วย CRLF และสคริปต์ SH ของคุณกับ LF
Sandburg

0

คุณกำลังมองหาcore.whitespaceตัวเลือก (ดูgit config --helpรายละเอียด)

คุณสามารถตั้งค่าตัวเลือกนี้ได้เช่น:

$ git config core.whitespace cr-at-eol

0

ฉันใช้วิธีนี้:

บันทึกไฟล์ปัจจุบันของคุณใน Git เพื่อไม่ให้งานของคุณสูญหาย

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

ลบทุกไฟล์ออกจากดัชนีของ Git

git rm --cached -r .

เขียนใหม่ดัชนี Git เพื่อรับปลายใหม่ทั้งหมด

git reset --hard

เพิ่มไฟล์ที่ถูกเปลี่ยนแปลงทั้งหมดของคุณกลับมาและเตรียมพร้อมสำหรับการคอมมิท นี่เป็นโอกาสของคุณในการตรวจสอบว่ามีไฟล์ใดบ้างที่ไม่เปลี่ยนแปลง

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

ยอมรับการเปลี่ยนแปลงที่เก็บของคุณ

git commit -m "Normalize all the line endings"

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


13
ฉันเชื่อว่า OP กำลังพยายามหลีกเลี่ยงการเห็นคำเตือนเหล่านั้นอีกต่อไป ไม่ทำให้บรรทัดสิ้นสุดทั้งหมดเป็นปกติ
Mike Cluck

git rm --cached -r . && git reset --hardดูเหมือนจะทำอุบายขอบคุณ
Shanimal

0

สนุกพอฉันได้ใช้การกำหนดค่าทั้งสองอย่างที่อธิบายไว้ที่นี่และไฟล์. gitconfig ของฉันมี 2 บรรทัดเหล่านี้:

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

แต่ฉันได้รับคำเตือน ทีนี้ลองทำดูคอมเม้นทั้งสองบรรทัดแล้วคำเตือนก็หายไปจริง ๆ ไม่มีความคิดว่าทำไมฉันถึงวางพวกเขาในสถานที่แรก แต่ ...


0

การตั้งค่าการทำงาน "core.safecrlf false" อย่างไรก็ตามหลังจากฉันเปลี่ยนค่าเป็น 'จริง' ผลลัพธ์จะเปลี่ยนจาก 'คำเตือน' เป็น 'ร้ายแรง' ดังที่แสดงด้านล่าง

$ 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

$

ใน git ล่าสุดดีกว่าที่จะใช้ gitattributes กว่า autocrlf ดูคำตอบของฉัน คำตอบทั้งหมด (ใน q นี้) เก่าและล้าสมัย
Rusi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.