คำตอบนี้ดูเหมือนจะเกี่ยวข้องเนื่องจาก OP อ้างถึงความต้องการโซลูชันหลายระบบปฏิบัติการ บทความช่วยเหลือ Github นี้ให้รายละเอียดเกี่ยวกับแนวทางที่ใช้ได้สำหรับการจัดการบรรทัดที่ลงท้ายข้ามระบบปฏิบัติการ มีวิธีการทั่วโลกและต่อ repo ในการจัดการการสิ้นสุดบรรทัดข้ามระบบปฏิบัติการ
แนวทางระดับโลก
กำหนดค่าการจัดการการสิ้นสุดบรรทัด Git บน Linux หรือ OS X:
git config --global core.autocrlf input
กำหนดค่าการจัดการการสิ้นสุดบรรทัด Git บน Windows:
git config --global core.autocrlf true
แนวทางต่อ repo:
ในรากของ repo ของคุณสร้าง.gitattributes
ไฟล์และกำหนดการตั้งค่าบรรทัดสิ้นสุดลงสำหรับไฟล์โครงการของคุณหนึ่งบรรทัดในเวลาในรูปแบบต่อไปนี้: path_regex line-ending-settings
ที่line-ending-settings
เป็นหนึ่งต่อไปนี้:
- ข้อความ
- ไบนารี (ไฟล์ที่ Git ไม่ควรแก้ไขส่วนท้ายบรรทัดเนื่องจากอาจทำให้รูปภาพบางประเภทเช่น PNG ไม่แสดงผลในเบราว์เซอร์)
text
ค่าสามารถกำหนดค่าต่อการออกคำสั่ง Git เกี่ยวกับวิธีการจัดการกับปลายสายสำหรับไฟล์ที่ตรงกับ:
text
- เปลี่ยนการสิ้นสุดบรรทัดเป็นการสิ้นสุดบรรทัดเนทีฟของ OS
text eol=crlf
- แปลงการสิ้นสุดบรรทัดเป็นCRLF
เมื่อชำระเงิน
text eol=lf
- แปลงการสิ้นสุดบรรทัดเป็นLF
เมื่อชำระเงิน
text=auto
- ค่าเริ่มต้นที่สมเหตุสมผลซึ่งปล่อยให้บรรทัดจัดการตามดุลยพินิจของ Git
นี่คือเนื้อหาของไฟล์. gitattributes ตัวอย่าง:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
เพิ่มเติมเกี่ยวกับวิธีการฟื้นฟู repo ของคุณหลังจากเปลี่ยนการตั้งค่าตอนจบบรรทัดที่นี่ Tldr:
สำรองไฟล์ของคุณด้วย Git ลบทุกไฟล์ในที่เก็บของคุณ (ยกเว้นไดเร็กทอรี. git) จากนั้นกู้คืนไฟล์ทั้งหมดในครั้งเดียว บันทึกไฟล์ปัจจุบันของคุณใน Git เพื่อไม่ให้งานของคุณสูญหาย
git add . -u
git commit -m "Saving files before refreshing line endings"
ลบดัชนีและบังคับให้ Git สแกนไดเร็กทอรีการทำงานอีกครั้ง
rm .git/index
เขียนดัชนี Git ใหม่เพื่อรับส่วนท้ายบรรทัดใหม่ทั้งหมด
git reset
แสดงไฟล์ที่เขียนซ้ำและทำให้เป็นมาตรฐาน
ในบางกรณีนี่คือสิ่งที่ต้องทำ คนอื่น ๆ อาจต้องทำตามขั้นตอนเพิ่มเติมดังต่อไปนี้:
git status
เพิ่มไฟล์ที่เปลี่ยนแปลงทั้งหมดของคุณกลับและเตรียมการคอมมิต นี่เป็นโอกาสของคุณในการตรวจสอบว่าไฟล์ใดบ้างที่ไม่มีการเปลี่ยนแปลง
git add -u
ปลอดภัยอย่างยิ่งที่จะเห็นข้อความจำนวนมากที่อ่าน [s] "คำเตือน: CRLF จะถูกแทนที่ด้วย LF ในไฟล์"
เขียนไฟล์. gitattributes ใหม่
git add .gitattributes
ยอมรับการเปลี่ยนแปลงที่เก็บของคุณ
git commit -m "Normalize all the line endings"