Ada beberapa file di basis kode yang dikontrol git yang ingin saya ganti namanya. Secara khusus, saya hanya ingin mengubah kasus file, jadi itu sourceCode.java
menjadi SourceCode.java
, misalnya. Tangkapan: Saya di kotak Windows, dan sistem file berpikir itu adalah nama file yang sama.
Bagaimana saya bisa membuat Windows dan Git mengenali perubahan itu dan memeriksanya?
git mv
seharusnya berfungsi ( stackoverflow.com/a/24979063/6309 ). Bahkan di Windows.Jawaban:
Lihat di sini untuk petunjuk lebih lanjut tentang cara melakukannya:
Bagaimana cara membuat git mengabaikan perubahan untuk jaga-jaga?
Atau:
sumber
git add
dari folder yang baru diganti nama, JANGAN KOMIT, ubah nama folder kembali ke apa yang seharusnya. ,git add
lagi dan kemudian komit.Get-ChildItem '.' | Rename-Item {$_.Name.ToLowerCase()}
Jika Anda menggunakan sistem file FAT, satu-satunya pilihan Anda adalah melakukan rename dua tahap:
sourceCode.java
menjadianything.you.like
anything.you.like
menjadiSourceCode.java
Kembali pada hari-hari ketika kami menggunakan Perforce kami memiliki masalah ini dan ini adalah satu-satunya solusi yang dapat kami buat.
sumber
Langkah-langkah berikut memungkinkan saya untuk mengubah kasing pada Windows:
ignorecase = false
ke[core]
dalam.git/config
;ignorecase = false
ditambahkan pada langkah pertama.Dengan cara ini Anda memiliki satu komit yang berisi rename dan membuatnya mudah untuk mengubah misalnya seluruh direktori.
sumber
Hati-hati. Melakukan hal ini dapat menyebabkan perubahan yang tidak mungkin untuk digabungkan. Git menjadi bingung ketika menggabungkan pada Windows karena tidak dapat memutuskan apakah nama Huruf besar yang lama dan nama huruf kecil yang baru adalah file yang sama atau tidak (untuk Git tidak, tetapi untuk sistem file itu). Untuk menggabungkan Anda harus melakukan beberapa solusi manual seperti menghapus file sebelum bergabung.
Lihat masalah Git rebase dengan file dengan nama yang sama tetapi case berbeda
Saya tidak yakin apakah masalah ini lebih buruk daripada memiliki file dengan nama yang tidak konvensional di proyek Anda selama-lamanya, tetapi perlu diketahui tentang apakah ada banyak pengguna dengan banyak cabang yang semuanya harus digabungkan pada akhirnya.
sumber
Menurut saya satu cara sederhana hilang. Anda dapat melakukan ini untuk satu file, direktori tertentu atau bahkan seluruh repositori:
Jika Anda ingin mempengaruhi juga sub-direktori, Anda harus menggunakan
-r
flag:sumber
Dengan NTFS (atau FAT), satu
git mv
perintah tidak memecahkan masalah. Pertanyaan ini menunjukkan teknik yang berfungsi: git mv dan hanya mengubah case direktorisumber