Pertanyaan Bagaimana saya melakukan perubahan nama file case-sensitive hanya di Git?


Saya telah mengubah beberapa nama file dengan menghilangkan huruf besar pada huruf pertama, seperti pada Name.jpg untuk name.jpg. Git tidak mengenali perubahan ini dan saya harus menghapus file dan mengunggahnya lagi. Apakah ada cara agar Git dapat menjadi case-sensitive ketika memeriksa perubahan nama file? Saya belum melakukan perubahan pada file itu sendiri.


831
2017-07-16 17:41


asal


Jawaban:


Kamu dapat memakai git mv:

git mv -f OldFileNameCase newfilenamecase

1055
2018-01-03 15:57



Git memiliki pengaturan konfigurasi yang memberitahukannya apakah menjadi case sensitive atau tidak sensitif: core.ignorecase. Untuk memberi tahu Git agar case-senstive, cukup atur pengaturan ini false:

git config core.ignorecase false

Dokumentasi

Dari git config dokumentasi:

core.ignorecase

Jika benar, opsi ini memungkinkan berbagai cara untuk mengaktifkan git agar berfungsi lebih baik di sistem file yang tidak peka huruf besar, seperti FAT. Misalnya, jika daftar direktori ditemukan makefile ketika git mengharapkan Makefile, git akan menganggap itu benar-benar file yang sama, dan terus mengingatnya sebagai Makefile.

Default-nya salah, kecuali git-clone (1) atau git-init (1) akan menyelidiki dan mengatur core.ignorecase true jika sesuai ketika repositori dibuat.

File-sistem yang tidak sensitif terhadap kasus

Dua sistem operasi paling populer yang memiliki sistem file case-insensitive yang saya ketahui

  • Windows
  • OS X

673
2017-07-16 22:52



Inilah yang saya lakukan di OS X:

git mv File file.tmp
git mv file.tmp file

Dua langkah karena jika tidak saya mendapat "file ada" kesalahan. Mungkin itu bisa dilakukan dalam satu langkah dengan menambahkan --cached atau semacamnya.


83
2017-11-13 14:27



Menggunakan SourceTree saya bisa melakukan ini semua dari UI

  • Ganti nama FILE.ext untuk whatever.ext
  • Panggung file itu
  • Sekarang ganti namanya whatever.ext untuk file.ext
  • Panggung file itu lagi

Ini agak membosankan, tetapi jika Anda hanya perlu melakukannya ke beberapa file, itu cukup cepat


65
2017-10-28 14:40



Di bawah OSX, untuk menghindari masalah ini dan menghindari masalah lain dengan mengembangkan pada sistem file case-insensitive, Anda dapat menggunakan Disk Utility untuk membuat sebuah kasus peka drive virtual / gambar disk.

Jalankan utilitas disk, buat gambar disk baru, dan gunakan pengaturan berikut (atau ubah sesuka Anda, tetapi jagalah agar tetap sensitif terhadap huruf besar / kecil):

Mac Disk Utility Screenshot

Pastikan untuk memberi tahu git sekarang pada FS case sensitive:

git config core.ignorecase false

36
2017-10-03 19:18



1) ganti nama file Name.jpg untuk name1.jpg

2) file yang dihapus Name.jpg

3) ganti nama file name1.jpg untuk name.jpg

4) ammend file yang ditambahkan name.jpg untuk komit sebelumnya

git add
git commit --amend

12
2017-10-03 19:13



Saya mencoba solusi berikut dari jawaban yang lain dan mereka tidak berfungsi:

Jika repositori Anda di-host di GitHub seperti milik saya, Anda dapat mengganti nama file asal (GitHub.com) dan memaksakan penggantian nama file dengan cara top-down. Inilah yang saya lakukan:

  1. Kunjungi GitHub.com
  2. Arahkan ke repositori Anda di GitHub.com dan pilih cabang tempat Anda bekerja
  3. Arahkan ke file yang Anda inginkan untuk mengganti nama menggunakan alat navigasi file situs
  4. Klik ikon "Edit file ini" (ini terlihat seperti pensil)
  5. Ubah nama file dalam input teks nama file
  6. Pastikan "Komit langsung ke branchname cabang "tombol radio dipilih
  7. Klik tombol "Komit perubahan"
  8. Secara lokal, kasir / tarik / ambil cabang
  9. Selesai

5
2017-10-31 18:22



Saya telah menghadapi masalah ini beberapa kali di MacOS. Git peka huruf besar tapi Mac hanya pelestarian huruf besar kecil.

Seseorang melakukan file: Foobar.java dan setelah beberapa hari memutuskan untuk mengganti namanya menjadi FooBar.java. Saat Anda menarik kode terakhir gagal The following untracked working tree files would be overwritten by checkout...

Satu-satunya cara yang dapat diandalkan yang pernah saya lihat yang memperbaiki ini adalah:

  1. git rm Foobar.java
  2. Komit dengan pesan yang tidak boleh Anda lewatkan git commit -m 'TEMP COMMIT!!'
  3. Tarik
  4. Ini akan memunculkan konflik yang memaksa Anda untuk menggabungkan konflik - karena perubahan Anda menghapusnya, tetapi perubahan lainnya diganti (karena itu masalahnya)
    1. Terima perubahan Anda yang merupakan 'penghapusan'
    2. git rebase --continue
  5. Sekarang jatuhkan solusi Anda git rebase -i HEAD~2 dan drop itu TEMP COMMIT!!
  6. Konfirmasikan bahwa file tersebut sekarang dipanggil FooBar.java

3
2017-08-05 17:23



Terkadang berguna untuk itu untuk sementara ubah sensitivitas kasus Git. Berikut dua metode yang mungkin: -

Metode 1:

git -c core.ignorecase=  <<true or false>>  <<command>> dapat digunakan untuk mengubah sensitivitas huruf untuk satu perintah. Misalnya: git -c core.ignorecase=true checkout mybranch. (Kredit ke VonC untuk menyarankan ini di komentar.)

Metode 2:

Untuk mengubah pengaturan lebih lama (misalnya jika beberapa perintah harus dijalankan sebelum mengubahnya kembali):

  1. git config core.ignorecase (ini mengembalikan pengaturan saat ini, mis. false).
  2. git config core.ignorecase  <<true or false>> - atur pengaturan baru yang diinginkan.
  3. ... Jalankan beberapa perintah lainnya ...
  4. git config core.ignorecase  <<false or true>> - setel nilai konfigurasi kembali ke pengaturan sebelumnya.

2
2017-07-10 11:05



Ketika Anda telah melakukan banyak penggantian nama file dan beberapa dari itu hanya perubahan casing, sulit untuk mengingat yang mana. secara manual "git moving" file bisa menjadi beberapa pekerjaan. Jadi apa yang akan saya lakukan selama tugas perubahan nama file saya adalah:

  1. hapus semua file dan folder non-git ke folder / repositori yang berbeda.
  2. komit folder git kosong saat ini (ini akan ditampilkan karena semua file dihapus.)
  3. tambahkan semua file kembali ke folder / repositori git asli.
  4. melakukan folder git yang tidak kosong saat ini.

Ini akan memperbaiki semua masalah kasus tanpa mencoba mencari tahu file atau folder mana yang Anda ganti namanya.


1
2018-04-29 11:00