ข้อความเหล่านี้เกิดจากค่าเริ่มต้นที่ไม่ถูกต้องของcore.autocrlf
บน Windows
แนวคิดของautocrlf
คือการจัดการการแปลงปลายสายอย่างโปร่งใส และมันก็เป็นเช่นนั้น!
ข่าวร้าย : ต้องกำหนดค่าด้วยตนเอง
ข่าวดี : มันควรจะทำเพียงครั้งเดียวต่อการติดตั้งคอมไพล์ (ต่อการตั้งค่าโครงการก็เป็นไปได้)
วิธีautocrlf
การทำงาน :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
ที่นี่crlf
= เครื่องหมายระบุจุดสิ้นสุดของรูปแบบ win-style lf
= unix-style (และ mac osx)
(pre-osx cr
ไม่ได้รับผลกระทบใด ๆ จากสามตัวเลือกด้านบน)
คำเตือนนี้ปรากฏขึ้นเมื่อใด (ใต้ Windows)
- autocrlf
= true
ถ้าคุณมีรูปแบบยูนิกซ์lf
ในไฟล์ใดไฟล์หนึ่งของคุณ (= RARELY)
- autocrlf
= input
หากคุณมีรูปแบบวินเป็นcrlf
หนึ่งในไฟล์ของคุณ (= เกือบตลอดเวลา)
- autocrlf
= false
- ไม่เคย!
คำเตือนนี้หมายถึงอะไร
คำเตือน " LF จะถูกแทนที่ด้วย CRLF " บอกว่าคุณ (มีautocrlf
= true
) จะสูญเสีย LF ในยูนิกซ์สไตล์ของคุณหลังจากเสร็จสิ้นการชำระเงิน (มันจะถูกแทนที่ด้วย CRLF สไตล์ Windows) Git ไม่ได้คาดหวังให้คุณใช้ LF แบบ unix ในหน้าต่าง
คำเตือน " CRLF จะถูกแทนที่ด้วย LF " บอกว่าคุณ (มีautocrlf
= input
) จะสูญเสีย CRLF สไตล์หน้าต่างของคุณหลังจากรอบการยอมรับการชำระเงิน (มันจะถูกแทนที่ด้วย LF สไตล์ unix) อย่าใช้ในinput
หน้าต่าง
อีกวิธีหนึ่งในการแสดงว่าautocrlf
ทำงานอย่างไร
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
โดยที่xคือ CRLF (windows-style) หรือ LF (unix-style) และลูกศรหมายถึง
file to commit -> repository -> checked out file
วิธีแก้ไข
เลือกค่าเริ่มต้นสำหรับcore.autocrlf
ระหว่างการติดตั้ง git และเก็บไว้ใน gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig
) ทั้งระบบ ยังมี (เรียงตามลำดับต่อไปนี้):
- "ทั่วโลก" (ต่อผู้ใช้) ตั้งอยู่ที่ gitconfig ~/.gitconfig
ยังอีก
- "ทั่วโลก" gitconfig (ต่อผู้ใช้) ที่$XDG_CONFIG_HOME/git/config
หรือ$HOME/.config/git/config
และ
- "ท้องถิ่น" (ต่อ repo) gitconfig ที่.git/config
ใน dir ทำงาน
ดังนั้นเขียนgit config core.autocrlf
ใน dir ทำงานเพื่อตรวจสอบค่าที่ใช้ในปัจจุบันและ
- เพิ่มautocrlf=false
ไปยังระบบ gitconfig # ต่อโซลูชันระบบ
- git config --global core.autocrlf false
# โซลูชั่นต่อผู้ใช้
- git config --local core.autocrlf false
# โซลูชั่นต่อโครงการ
คำเตือน
- git config
การตั้งค่าสามารถแทนที่ได้ด้วยgitattributes
การตั้งค่า
- crlf -> lf
การแปลงจะเกิดขึ้นเมื่อเพิ่มไฟล์ใหม่ไฟล์crlf
ที่มีอยู่แล้วใน repo จะไม่ได้รับผลกระทบ
คุณธรรม (สำหรับ Windows):
- ใช้core.autocrlf
= true
ถ้าคุณวางแผนที่จะใช้โครงการนี้ภายใต้ระบบปฏิบัติการยูนิกซ์เช่นกัน (และไม่เต็มใจที่จะกำหนดค่าเครื่องมือแก้ไข / IDE ของคุณให้ใช้ปลายสายยูนิกซ์)
- ใช้core.autocrlf
= false
ถ้าคุณวางแผนที่จะใช้โครงการนี้ใน Windows เท่านั้น ( หรือคุณได้กำหนดค่าเครื่องมือแก้ไข / IDE ของคุณให้ใช้จุดสิ้นสุดบรรทัด unix)
- ห้ามใช้core.autocrlf
= input
เว้นแต่คุณจะมีเหตุผลที่ดีในการ ( เช่นถ้าคุณใช้ยูทิลิตี unix ใน windows หรือหากคุณพบปัญหาเกี่ยวกับ makefiles)
PS มีอะไรให้เลือกบ้างเมื่อติดตั้ง git สำหรับ Windows
หากคุณจะไม่ใช้โครงการใด ๆ ภายใต้ระบบปฏิบัติการยูนิกซ์อย่าเห็นด้วยกับตัวเลือกแรกที่เป็นค่าเริ่มต้น เลือกรายการที่สาม ( ชำระเงินตามสภาพ, กระทำตามสภาพ ) คุณจะไม่เห็นข้อความนี้ เคย
ความชอบส่วนบุคคล PPS ของฉันคือการกำหนดค่าบรรณาธิการ / IDEใช้ปลาย Unix สไตล์และการตั้งค่าไปcore.autocrlf
false