## Git 資料夾大小寫拼寫錯誤,晚了一步 在開發有時會遇到資料夾大小寫錯的問題,但遇到的當下最好直接 `git mv <file> <directory>` 盡快處理好,如果沒有就會變成很慘... * 在某天開發的時候,發現自己資料夾大小寫有問題,但一開始不疑有他的想說直接換掉就好,殊不知幾周後發現了兩份一樣的Code只有大小寫資料夾不一樣,那這時很單純就是把錯的文件砍掉就好。 * 結果意外發現兩邊資料夾的`git tracking`已經被綁在一起,所以無論怎麼改git只會統一辨識一種(最早寫錯的版本),這時你在寫 ```bash PS C:\Users\Desktop\project\src\pages> git mv -v pageA PageA Rename from 'src/pages/pageA' to 'src/pages/PageA' failed. Should I try again? (y/n) y Rename from 'src/pages/pageA' to 'src/pages/PageA' failed. Should I try again? (y/n) y ... ``` 也只會一直`Failed`掉,然後你的資料夾也只會呈現已經改好的狀況 ![image](https://hackmd.io/_uploads/B1YS3tVKR.png) 但`git diff`一起比對則會發現`大寫資料夾跟小寫資料依然共存兩邊對不起來` `remote 端` 依然存在,砍掉專案重新clone也只有出現`正確版本的資料夾`,但是修改 add . 時緩存就會一直噴錯無法順利`commit` ```bash ├─pages │ ├─PageA - 正確(O) │ ├─Others - 正確(O) │ ├───────────────────────────── │ ├─pageA - 錯誤(X) │ ├─other - 錯誤(X) ``` 在兩邊鬼打牆的狀況,我們先釐清幾點 1. git 確實有偵測到新舊的檔案 1. 但是 git clone下來一樣只有新的檔案,看不到舊的檔案 那換個思路既然有偵測到,那應該就能控制。於是我在這個看不見錯誤資料夾的專案中砍了它 ```bash PS C:\Users\Desktop\project\src\pages> git rm -rf .\pageA\ rm 'src/pages/pageA/***.tsx' rm 'src/pages/pageA/***.type.ts' ``` 不出所料阿,git 紀錄裡還是能做修改的,`git traing` 此時也感應出了兩種新舊的資料夾刪除,於是我們只保留了新的版本,移除舊的。 ```bash ├─pages/PageA --deleted ├─pages/Others --deleted ├─pages/pageA --deleted ├─pages/other --deleted ``` 就這樣一一修改掉`commit`起來,最後`git push` pr review 檢查完乾淨,舒服 ~