Saya mencoba mengubah nama file agar memiliki kapitalisasi berbeda dari sebelumnya:
git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js
Seperti yang bisa Anda lihat, Git melakukan ini. Saya mencoba mengubah nama hanya menggunakan mv
perintah lama , tetapi Git tidak mengambil nama baru (sebagai nama baru atau sebagai file baru yang tidak bisa dilacak).
Bagaimana saya bisa mengubah file untuk memiliki kapitalisasi berbeda dengan nama yang sama? Saya menggunakan Mac OS X v10.7.3 (Lion) dengan Git 1.7.9.1 menggunakan Z shell (zsh) 4.3.15.
git
rename
case-sensitive
file-rename
knpwrs
sumber
sumber
git mv myfile foo; git mv foo MyFile
git mv hello.txt Hello.txt
akan bekerja pada OS yang case-sensitive. Lihat jawaban saya di bawah iniJawaban:
Mulai Git 2.0.1 (25 Juni 2014),
git mv
hanya akan bekerja pada OS yang case-sensitive .Lihat commit baa37bf oleh David Turner (
dturner-tw
) .mv
: memungkinkan penggantian nama untuk memperbaiki kasus pada sistem file case sensitif"
git mv hello.txt Hello.txt
" pada case filesystem yang tidak sensitif selalu memicu "destination already exists
" kesalahan, karena kedua nama ini merujuk ke path yang sama dari sudut pandang filesystem dan mengharuskan pengguna untuk memberikan "--force
" ketika memperbaiki case dari path yang direkam dalam indeks dan di komit selanjutnya.git mv hello.txt Hello.txt
hanya berfungsi (tidak--force
diperlukan lagi).Alternatif lainnya adalah:
Dan ganti nama file secara langsung; git tambah dan komit.
sumber
git config core.ignorecase false
Mempertimbangkan jawaban larsks , Anda bisa membuatnya bekerja dengan satu perintah dengan "--force":
sumber
Error: Will not add file alias 'MyFile' ('myfile' already exists in index)
Kadang-kadang Anda ingin mengubah kapitalisasi banyak nama file pada sistem file case sensitif (misalnya pada OS X atau Windows). Melakukan
git mv
perintah akan cepat lelah. Untuk membuat segalanya lebih mudah, inilah yang saya lakukan:git add . -A
untuk menghapus semua file.git add .
. Git akan melihat bahwa file diubah namanya.Sekarang Anda dapat membuat komit dengan mengatakan Anda telah mengubah kapitalisasi nama file.
sumber
Nama file di bawah OS X tidak peka huruf besar-kecil (secara default). Ini lebih merupakan masalah OS daripada masalah Git. Jika Anda menghapus dan membaca file, Anda harus mendapatkan apa yang Anda inginkan, atau mengganti namanya menjadi sesuatu yang lain dan kemudian mengubah nama file itu kembali.
sumber
git clone
repo pada sistem Linux, ganti nama file dan komit hanya untuk situasi ini (jika Anda memiliki sistem Linux di tangan).git rm --cached fileorfolder
untuk menghapus file atau folder dari git tanpa menghapus file atau folder dari sistem file. Kemudian Anda cukup menambahkan file atau folder lagi dengangit add fileorfolder
.Setel
ignorecase
kefalse
dalam git configKarena posting asli adalah tentang "Mengubah kapitalisasi nama file di Git":
Jika Anda mencoba mengubah kapitalisasi nama file di proyek Anda, Anda tidak perlu memaksakan mengganti nama dari Git. IMO, saya lebih suka mengubah kapitalisasi dari IDE / editor saya dan memastikan bahwa saya mengkonfigurasi Git dengan benar untuk mengambil penggantian nama.
Secara default, templat Git diatur untuk mengabaikan case (Git case peka). Untuk memverifikasi Anda memiliki templat default, gunakan
--get
untuk mengambil nilai untuk kunci yang ditentukan. Gunakan--local
dan--global
untuk menunjukkan kepada Git apakah akan mengambil nilai kunci konfigurasi dari konfigurasi repositori Git lokal Anda atau yang global. Sebagai contoh, jika Anda ingin mencari kunci global Andacore.ignorecase
:Jika ini kembali
true
, pastikan untuk mengaturnya sebagai:(Pastikan Anda memiliki izin yang tepat untuk mengubah global.) Dan begitulah; sekarang instalasi Git Anda tidak akan mengabaikan kapitalisasi dan memperlakukannya sebagai perubahan.
Sebagai saran, jika Anda bekerja pada proyek multi-bahasa dan Anda merasa tidak semua proyek diperlakukan sebagai case-sensitive oleh Git, cukup perbarui
core.ignorecase
file lokal .sumber
git config --global --get core.ignorecase
tidak mengembalikan apa pun. Apakah itutrue
?? karena setelah saya mengaturnya untukfalse
mengembalikan false (Windows 10)git mv
). Saya juga berasumsi bahwa secara default dianggap benar (yaitu mengabaikan kasus). Entah itu, atau itu cocok dengan kebijakan OS untuk mengajukan casing nama.Anda dapat membuka direktori ".git" dan kemudian mengedit file "config". Di bawah set [[core] ", set" ignorecase = true "dan Anda selesai;)
sumber
Untuk mem-bulk
git mv
file ke huruf kecil di macOS:Ini akan mengurangi semua file dalam folder.
sumber
Cuplikan Python ini akan
git mv --force
semua file dalam direktori menjadi huruf kecil. Misalnya, foo / Bar.js akan menjadi foo / bar.js viagit mv foo/Bar.js foo/bar.js --force
.Ubah sesuai keinginan Anda. Saya pikir saya akan berbagi :)
sumber
Contoh kerja:
sumber