Bagaimana cara membuat git mengabaikan perubahan dalam kasus?

106

Saya tidak terlalu yakin apa yang terjadi di sini, tetapi terkadang file tertentu di repositori saya akan mengubah kasus namanya. misalnya,:

sebelum: File.h

setelah: file.h

Saya tidak terlalu peduli mengapa ini terjadi, tetapi ini menyebabkan git berpikir itu adalah file baru, dan kemudian saya harus pergi dan mengubah nama file kembali. Bisakah Anda membuat git mengabaikan perubahan kasus?

[Sunting] Saya menduga Visual Studio melakukan sesuatu yang aneh dengan file tertentu, karena tampaknya paling sering terjadi ketika saya membuka dan menyimpannya setelah perubahan. Saya tidak punya cara untuk memperbaiki bug di VS, tapi saya harap git bisa lebih mampu.

1800 INFORMASI
sumber
1
Re: Visual Studio menyimpan file dalam huruf kecil semua Versi Visual Studio mana yang Anda gunakan? Terakhir saya periksa ini sepertinya lebih baik di versi 2008. Pada tahun 2005, bug tampaknya terjadi ketika file dibuka melalui debugger, bukan explorer solusi.
Adam Mitz
Sebenarnya ya ini tahun 2005. Tidak ada kesempatan untuk upgrade untuk sementara waktu.
1800 INFORMASI

Jawaban:

177

Sejak versi 1.5.6 ada ignorecaseopsi yang tersedia di [core]bagian.git/config

mis. tambahkan ignorecase = true

Untuk mengubahnya hanya untuk satu repo, dari folder itu jalankan:

git config core.ignorecase true

Untuk mengubahnya secara global:

git config --global core.ignorecase true
MarkB
sumber
21
git config core.ignorecase true atau git config --global core.ignorecase true untuk diterapkan secara global.
Aaron Jensen
@graywh: Ini didokumentasikan di git-config di bawah core.ignorecase ( kernel.org/pub/software/scm/git/docs/git-config.html )
Ben Lings
4
Terima kasih, akhirnya saya menemukan mengapa git tidak memperhitungkan perubahan kasus saya. ignorecase = falseberhasil, defaultnya adalah true-_-
Alex C
15

Anda dapat memaksa git untuk mengganti nama file dengan cara hanya-kasus dengan perintah ini:

git mv --cached name.txt NAME.TXT

Perhatikan bahwa ini tidak mengubah kapitalisasi file dalam salinan yang Anda periksa di partisi Windows, tetapi git mencatat perubahan casing dan Anda dapat melakukan perubahan itu. Pembayaran selanjutnya akan menggunakan casing baru.

Andrew Arnott
sumber
1
"error: opsi tidak dikenal` cache '. " Itu tidak terdaftar di dokumen, baik: git-scm.com/docs/git-mv
Alex
12

Di git versi 1.6.1.9 untuk windows saya menemukan bahwa "ignorecase = true 'di config sudah disetel secara default.

John C
sumber
7
Ya, dan saat Anda bekerja dengan file Java, Anda ingin pengaturan ini disetel ke false, jika tidak, Anda mungkin mengalami masalah saat melakukan pemfaktoran ulang seperti itu (kelas HTMLParser menjadi HtmlParser atau sebaliknya).
PhiLho
sama untuk git versi 2.10.1.windows.1
Kars Barendrecht
3
Saya tahu ini sudah tua, tetapi tidak masuk akal di windows untuk mengatur ignorecase ke false karena Windows adalah sistem operasi yang tidak case-sensitive. Ini berlaku baik Anda bekerja dengan Java atau (terkesiap!) C # atau yang lainnya.
ingyhere
5

Situasi yang dijelaskan dalam pertanyaan tersebut sekarang terjadi kembali dengan Mac OS X, versi git> = 1.7.4 (menurut saya). Obatnya adalah dengan menyetel ignorecase = false dan mengganti nama file dengan huruf kecil (git berubah seperti itu, bukan Visual Studio) kembali ke UsualCase dengan tangan (yaitu 'mv myname MyName').

Info selengkapnya di sini .

akauppi
sumber