จะทำให้ git ละเว้นการเปลี่ยนแปลงในกรณีได้อย่างไร?


106

ฉันไม่แน่ใจเหมือนกันว่าเกิดอะไรขึ้นที่นี่ แต่บางครั้งไฟล์ใดไฟล์หนึ่งในที่เก็บของฉันจะเปลี่ยนกรณีของชื่อมัน เช่น,:

ก่อน: File.h

หลังจาก: file.h

ฉันไม่สนใจจริงๆว่าทำไมสิ่งนี้ถึงเกิดขึ้น แต่ทำให้ git คิดว่ามันเป็นไฟล์ใหม่จากนั้นฉันต้องไปเปลี่ยนชื่อไฟล์กลับ คุณสามารถเพิกเฉยต่อการเปลี่ยนแปลงกรณีและปัญหาได้หรือไม่?

[แก้ไข] ฉันสงสัยว่า Visual Studio กำลังทำอะไรแปลก ๆ กับไฟล์นั้น ๆ เพราะดูเหมือนว่าจะเกิดขึ้นบ่อยที่สุดเมื่อฉันเปิดและบันทึกหลังจากมีการเปลี่ยนแปลง ฉันไม่มีวิธีแก้ไขข้อบกพร่องใน VS แต่ git ควรจะมีความสามารถมากกว่านี้ฉันหวังว่า


1
Re: Visual Studio บันทึกไฟล์เป็นตัวพิมพ์เล็กทั้งหมดคุณใช้ Visual Studio รุ่นไหน? ล่าสุดฉันตรวจสอบสิ่งนี้ดูเหมือนจะดีกว่าในเวอร์ชัน 2008 ในปี 2548 ข้อผิดพลาดดูเหมือนจะเกิดขึ้นเมื่อเปิดไฟล์ผ่านดีบักเกอร์แทนที่จะเป็นตัวสำรวจโซลูชัน
Adam Mitz

จริงๆแล้วนี่คือปี 2005 ไม่มีโอกาสได้อัปเกรดมาระยะหนึ่งแล้ว
1800 ข้อมูล

คำตอบ:


179

ตั้งแต่เวอร์ชัน 1.5.6 มีignorecaseตัวเลือกใน[core]ส่วนของ.git/config

เช่นเพิ่ม ignorecase = true

หากต้องการเปลี่ยนสำหรับ repo เพียงครั้งเดียวจากการเรียกใช้โฟลเดอร์นั้น:

git config core.ignorecase true

ในการเปลี่ยนแปลงทั่วโลก:

git config --global core.ignorecase true

21
git config core.ignorecase true หรือ git config --global core.ignorecase true เพื่อนำไปใช้ทั่วโลก
Aaron Jensen

@graywh: มีการบันทึกไว้ใน git-config ภายใต้ core.ignorecase ( kernel.org/pub/software/scm/git/docs/git-config.html )
Ben Lings

4
ขอบคุณในที่สุดฉันก็พบว่าทำไมคอมไพล์ถึงไม่คำนึงถึงการเปลี่ยนแปลงกรณีของฉัน ignorecase = falseทำกลอุบายผิดนัดtrue-_-
Alex C

15

คุณสามารถบังคับให้คอมไพล์เปลี่ยนชื่อไฟล์ด้วยวิธีเดียวกับคำสั่งนี้:

git mv --cached name.txt NAME.TXT

โปรดทราบว่าสิ่งนี้ไม่ได้เปลี่ยนกรณีของไฟล์ในสำเนาเช็คเอาต์ของคุณบนพาร์ติชัน Windows แต่ git จะบันทึกการเปลี่ยนแปลงปลอกและคุณสามารถยอมรับการเปลี่ยนแปลงนั้นได้ การชำระเงินในอนาคตจะใช้ปลอกใหม่


2
"ข้อผิดพลาด: ตัวเลือกที่ไม่รู้จัก` `แคช ''" ไม่มีรายชื่ออยู่ในเอกสาร: git-scm.com/docs/git-mv
Alex

12

ใน git เวอร์ชัน 1.6.1.9 สำหรับ windows ฉันพบว่า "Ignorecase = true 'ใน config ถูกตั้งค่าเป็นค่าเริ่มต้นแล้ว


7
ใช่และเมื่อคุณทำงานกับไฟล์ Java คุณต้องการให้ตั้งค่านี้เป็นเท็จมิฉะนั้นคุณอาจประสบปัญหาเมื่อทำการ refactoring ดังกล่าว (HTMLParser คลาสกลายเป็น HtmlParser หรือย้อนกลับ)
ฟีลโฮ

เหมือนกันสำหรับ git เวอร์ชัน 2.10.1.windows.1
Kars Barendrecht

3
ฉันรู้ว่านี่เป็นเรื่องเก่า แต่เป็นเรื่องไร้สาระบน windows ที่จะตั้งค่า Ignorecase เป็นเท็จเนื่องจาก Windows เป็นระบบปฏิบัติการที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ สิ่งนี้ใช้ได้ไม่ว่าคุณจะทำงานกับ Java หรือ (อ้าปากค้าง!) C # หรืออย่างอื่น
นี่

5

ขณะนี้สถานการณ์ที่อธิบายไว้ในคำถามเกิดขึ้นอีกครั้งใน Mac OS X เวอร์ชัน git> = 1.7.4 (ฉันคิดว่า) วิธีแก้คือการตั้งค่า Ignorecase = false และเปลี่ยนชื่อไฟล์ที่เป็นตัวพิมพ์เล็ก (ซึ่ง git เปลี่ยนวิธีนั้นไม่ใช่ Visual Studio) กลับไปที่ UsualCase ด้วยมือ (เช่น 'mv myname MyName')

ข้อมูลเพิ่มเติมที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.