โพรซีเดอร์ของฉันสำหรับจัดการกับจุดสิ้นสุดของบรรทัดมีดังนี้ (การทดสอบการต่อสู้บน repos จำนวนมาก):
เมื่อสร้าง repo ใหม่:
- ใส่
.gitattributesในการกระทำแรกพร้อมกับไฟล์ทั่วไปอื่น ๆ เช่น .gitignoreและREADME.md
เมื่อจัดการกับ repo ที่มีอยู่:
- สร้าง / แก้ไข
.gitattributesตามลำดับ
git commit -a -m "Modified gitattributes"
git rm --cached -r . && git reset --hard && git commit -a -m 'Normalize CRLF' -n"
-n (--no-verifyคือการข้าม hooks ก่อนการกระทำ)
- ฉันต้องทำบ่อยพอที่จะนิยามว่าเป็นนามแฝง
alias fixCRLF="..."
- ทำซ้ำคำสั่งก่อนหน้า
- ใช่มันเป็น voodoo แต่โดยทั่วไปฉันต้องเรียกใช้คำสั่งสองครั้งครั้งแรกที่มันทำให้ไฟล์บางไฟล์เป็นปกติ โดยทั่วไปอาจเป็นการดีที่สุดที่จะทำซ้ำจนกว่าจะไม่มีการสร้างการมอบหมายใหม่ :)
- ย้อนกลับไปมาระหว่างเก่า (ก่อนการฟื้นฟู) และสาขาใหม่สองสามครั้ง หลังจากเปลี่ยนสาขาบางครั้งคอมไพล์ก็จะพบไฟล์จำนวนมากที่จำเป็นต้องเปลี่ยนรูปแบบใหม่!
ใน.gitattributesฉันประกาศไฟล์ข้อความทั้งหมดอย่างชัดเจนว่ามี LF EOL เนื่องจากโดยทั่วไปแล้วการใช้เครื่องมือของ Windows นั้นเข้ากันได้กับ LF ในขณะที่เครื่องมือที่ไม่ใช่ Windows ไม่สามารถทำงานร่วมกับ CRLF (แม้แต่เครื่องมือบรรทัดคำสั่ง nodejs จำนวนมากถือว่า LF และด้วยเหตุนี้
เนื้อหาของ .gitattributes
ฉัน.gitattributesมักจะดูเหมือนว่า:
*.html eol=lf
*.js eol=lf
*.json eol=lf
*.less eol=lf
*.md eol=lf
*.svg eol=lf
*.xml eol=lf
หากต้องการทราบว่าส่วนขยายใดบ้างที่ถูกติดตามโดย git ใน repo ปัจจุบันดูที่นี่
ปัญหาหลังการทำให้เป็นมาตรฐาน
เมื่อทำสิ่งนี้เสร็จแล้วก็มีข้อแม้ทั่วไปอีกข้อหนึ่งไว้
สมมติว่าคุณmasterมีอยู่แล้ว up-to-date outdated-branchและปกติและจากนั้นคุณชำระเงิน ค่อนข้างบ่อยหลังจากตรวจสอบจากสาขานั้น git ทำเครื่องหมายไฟล์หลายไฟล์ว่ามีการปรับเปลี่ยน
การแก้ปัญหาคือการทำปลอมกระทำ ( git add -A . && git commit -m 'fake commit') git rebase masterแล้ว หลังจากการปฎิบัติการกระทำที่ผิด ๆ ควรจะหายไป