Bagaimana cara saya mengganti nama file di git yang hanya berbeda per kasus?


14

Dalam proyek git (Xcode) saya, saya menggunakan nama file dengan case yang tidak sesuai. Sekarang saya mencoba mengubah nama, tetapi ketika saya berkomitmen, saya mendapatkan:

fatal: Tidak akan menambahkan file alias 'MyProject / MyFile.h' ('MyProject / MyFilE.h' sudah ada dalam indeks)

Saya yakin ini karena git tidak digunakan untuk menjalankan sistem file case-preserving, case-insensitive seperti HFS +. Tapi bagaimana cara mengatasinya?

Saya mencoba mengubah nama kedua file ke sesuatu yang lain, dan melakukan itu, dan kemudian mengubah nama mereka kembali ke apa yang saya inginkan, tetapi masih gagal (dengan pesan kesalahan yang sama).

Jawaban:


21

Seperti yang ditanyakan dan dijawab pada stackoverflow , ada cara yang lebih mudah untuk melakukan ini yang tidak melibatkan pembuatan sistem file baru dalam file gambar disk:

Pindahkan file yang ada ke samping, komit langkah itu, lalu pindahkan kembali menggunakan kasing yang ingin Anda pertahankan dan komit. Selesai

Contoh:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

untuk menghindari pembusukan tautan, kami biasanya meminta Anda menyalin bagian yang relevan dari jawaban di balik tautan ke badan jawaban.
Ian C.

Terima kasih @ ian-c. Saya berharap bahwa aturan ini tidak berlaku untuk tautan di dalam keluarga stackexchange.
mspasov

1
Ya, saya mengerti apa yang Anda katakan tetapi konsistensi itu bagus.
Ian C.

Aneh. Saya positif saya mencoba ini, tetapi hari ini berhasil. Terima kasih.
Ken

2

Saya belum menemukan cara untuk memperbaikinya secara langsung pada sistem file yang tidak sensitif, Anda memerlukan sistem file yang sensitif.

Untungnya Mac OS X memiliki dukungan pemasangan disk virtual yang baik, sehingga Anda dapat dengan cepat & mudah mendapatkan (membuat) sistem file case sensitif (sementara) di komputer Anda.

Buka Disk Utility, buat Gambar Baru dan setel bidang "Format" ke salah satu versi "Mac OS Extended" yang peka huruf besar-kecil. Pastikan juga Anda membuatnya cukup besar untuk repositori Anda.

Pasang disk baru Anda, periksa repositori git ke dalamnya, pastikan file dengan nama yang benar memiliki konten yang benar, dan hapus yang lainnya. Komit dan dorong perubahan Anda, lalu Anda dapat meng-unmount image disk dan menghapusnya.

Jika Anda tidak memiliki server jauh untuk dikloning (yaitu Anda hanya menjalankan git repo secara lokal di hard drive Anda), ingatlah Anda dapat mengkloning langsung dari repositori git lain pada hard drive Anda.


1
Itu sangat padat karya. Anda dapat melakukan ini tanpa harus memutar sistem file baru dalam file gambar disk.
Ian C.

1

Langkah 1 : Cukup ganti nama file dengan nama yang lebih berbeda (daripada hanya huruf). Pilih saja nama acak yang berbeda dari nama saat ini dan dari nama yang ingin Anda berikan.

Langkah 2 : lakukan file ini dengan GUI (Xcode) atau oleh CLI (Terminal)

Langkah 3 : ganti nama file seperti yang Anda inginkan untuk mengubah nama file di tempat pertama. Jadi sekarang, akan ada lebih banyak perbedaan dari sekadar halnya dengan nama sebelumnya.

Langkah 4 : komit file berganti nama lagi.

Tidak diperlukan trik sulap. Dan Anda dapat memilih untuk melakukan dengan GUI atau CLI.


0

Saya menggunakan sourcetree. Tanpa menggunakan CLI ada langkah mudah untuk melakukan ini. ganti nama file dengan nama lain (misalnya Index.php menjadi Index_old.php) kemudian komit dan tekan .. lagi ubah nama menjadi nama yang diinginkan (index.php) kemudian komit dan kirim.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.