ไม่มีชื่อบทความ
จากภาพที่น้อง dev ส่งมาและที่คุณเล่า สิ่งที่น่าจะเป็นสาเหตุหลักคือ ปัญหาเรื่องระบบไฟล์ของ Windows + OneDrive กับ path ที่มีชื่อไฟล์เป็นภาษาไทยและยาวเกินไป โดยเฉพาะเมื่อน้องใช้ Git Bash ผ่าน MINGW64 บน Windows
สาเหตุที่เป็นไปได้:
- ชื่อไฟล์ภาษาไทยที่ยาวเกินไป: Windows มีข้อจำกัดของ path length (260 ตัวอักษร โดยดีฟอลต์) ซึ่งพอเจอชื่อไฟล์ภาษาไทย + โฟลเดอร์ยาว ๆ อาจทะลุขีดจำกัด
- OneDrive sync: ไฟล์ใน OneDrive บางทีกำลัง sync หรือเป็นไฟล์ที่ยังไม่ดาวน์โหลดลงเครื่องเต็มที่ (On-demand file) ก็ทำให้ Git มองว่า path นั้น “invalid”
- Git config locale/encoding: ถ้า Git ไม่ได้ตั้ง encoding ให้รองรับ UTF-8 อาจเจอปัญหากับชื่อไฟล์ภาษาไทยได้
- ระบบไฟล์ไม่รองรับบางตัวอักษร: โดยเฉพาะถ้าเก็บ repo ไว้ใน path ที่ไม่ได้อยู่บน NTFS
วิธีแก้หรือให้ dev ลองทำ:
ย้าย repo ออกจาก OneDrive folder:
cd ~ mkdir test-cms cd test-cms git clone <repo-url> git switch cmsให้ลอง clone repo ที่ path ปกติไม่ใช่ใน OneDrive (อย่างในภาพคืออยู่ใน
~/OneDrive/Desktop/...)เปิด Long Path Support (ถ้ายังไม่ได้เปิด):
- เปิด Registry Editor แล้วไปที่:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem - แก้ค่า
LongPathsEnabledเป็น1
- เปิด Registry Editor แล้วไปที่:
ตั้ง Git ให้ใช้ UTF-8:
git config --global core.precomposeUnicode true git config --global i18n.commitEncoding utf-8 git config --global i18n.logOutputEncoding utf-8ให้ dev ใช้ Git ผ่าน VS Code Terminal หรือ Git for Windows ที่ path สั้นและไม่อยู่ใน OneDrive เพื่อทดสอบดูว่าเกี่ยวกับ environment ไหม
ถ้า dev ย้าย repo ออกมาจาก OneDrive แล้วยังเจอปัญหาอยู่ ลองให้เขาส่ง output ของคำสั่งนี้มาด้วย:
git status
chcp
จะได้เห็นว่า encoding ของ shell เป็นอะไร และไฟล์มีสถานะอะไรผิดปกติไหม
ให้ลองแล้วแจ้งผลมาได้นะ เดี๋ยวช่วยดูต่อจ้ะ