ฉันพยายามทำให้คอมไพล์ไม่เปลี่ยนการสิ้นสุดบรรทัดสำหรับการดำเนินการใด ๆ น่าเสียดายที่ดูเหมือนว่าจะทำเช่นนั้นไม่สำคัญอะไร ฉันได้ลดมันลงเป็นกรณีทดสอบต่อไปนี้ซึ่งมีกลไกต่างๆในการปิดใช้งานพฤติกรรมนี้มากที่สุดเท่าที่ฉันจะพบได้
- เริ่มต้นด้วยสองเครื่อง (คอมพิวเตอร์ Windows = A, คอมพิวเตอร์ Linux = B)
- ในทั้งสองเครื่อง:
git config --global core.autocrlf false - บนทั้งสองเครื่อง:
git config --global core.eol crlf(ในกรณีที่)
- สร้างที่เก็บใหม่บน A. จากโฟลเดอร์ว่าง:
- สร้างไฟล์ใหม่
document.txtในที่เก็บที่มี CRLF - กระทำ:
git add -Aแล้วgit commit -m "<something>" - โปรดทราบว่า A
document.txtยังคงมี CRLF (และลบและรีเซ็ตโดย--hardส่งคืนเวอร์ชันที่ยังคงอยู่กับ CRLF)
- SCP ไดเรกทอรีทั้งหมดไปยังคอมพิวเตอร์ B
- เพิ่มไฟล์ใหม่
new fileที่มี CRLF - กระทำ:
git add -Aแล้วgit commit -m "<something>" - โปรดทราบว่า B's
document.txtและ Bnew fileทั้งสองยังคงมี CRLF
- ดึงหลักของ B ไปที่ A:
git pull <remote> master:master_recv - A
document.txtเปลี่ยนเป็น LF แล้ว ไฟล์ที่เพิ่มnew fileยังมี LF
ปัญหาจะไม่เกิดขึ้นหาก B เป็นเครื่อง Windows


core.autocrlfเสมอรับเท็จ? ดูเหมือนว่าคุณจะมี\nจุดสิ้นสุดบรรทัดในที่เก็บของคุณแล้ว? นอกจากนี้ยังไม่มีการตั้งค่าการเปลี่ยนแปลง\nในพื้นที่เก็บข้อมูลของคุณไป\r\nในไดเรกทอรีการทำงานของคุณ