โพรซีเดอร์ของฉันสำหรับจัดการกับจุดสิ้นสุดของบรรทัดมีดังนี้ (การทดสอบการต่อสู้บน 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
แล้ว หลังจากการปฎิบัติการกระทำที่ผิด ๆ ควรจะหายไป