關於 git 大小寫問題的解決辦法
寫在前面:
最近,在專案部署的時候,總是遇到一些很靈異的問題,比如在 merge 沒有報錯的情況下,檔案沒有更新, 特殊的檔案突然被還原至之前的某個版本……最後發現問題所在,是之前的一次 檔名大小寫 引起的問題。解決過程其實還是挺糟心的(自己埋的坑要自己填……),深刻體會到好的規範比好的技術其實更重要。同時也覺得,有必要記錄一下,謹防下次掉進去。
問題復現:
1.新建乙個a.js檔案(大小寫不敏感的狀態下),並提交
2.修改本地a.js變為a.js,檔案內容無變更,無法提交
3.執行git config core.ignorecase false,修改 大小寫敏感 規則,然後提交,檢視結果,此時會存在 大小寫 同時存在的檔案
4.此時某種機緣下,再次執行git config core.ignorecase true,大小寫不敏感,
5.此時執行git push, 即把最新的更新都更新到了a.js中
6.此時再修改 大小寫敏感規則為敏感, 執行git pull,並不會拿到最新的更新。比如自己想要的是第一次修改後的a.js,但是伺服器有乙個沒有更新的a.js和 有更新的a.js,而你只能拿到前者,所以就會遇到各種各樣的坑……
解決辦法:
執行git config --global core.ignorecase false,全域性設定 大小寫敏感 。
因為 git 預設大小寫不敏感,所以最好新增專案配置檔案,設定 大小寫敏感。
touch .gitconfig
git config core.ignorecase false
總結:其實看解決辦法的話,只是乙個很小的問題,但是出現的 bug 確實是讓人很頭疼的,因為 mac windows 在不設定大小寫敏感規則的時候預設大小寫是不敏感,專案部署的機器是 linux 的,而 linux 是大小寫敏感的。所以這樣的問題平時不易發現,本地除錯的時候大部分時候並不會出錯誤,只有在專案部署的時候問題才會顯示出來。
git檔名大小寫問題
於 在windows下,一開始提交了乙個coinlog.js檔案,後來把它重新命名為coinlog.js,居然提交不了。git提示沒有改動。後來才知道,原來git預設對檔名的大小寫不敏感。方案1,配置git 首先可以通過配置git來達到識別檔名大小寫的問題。命令如下 git config core....
Git區分檔名大小寫
git預設不區分檔名大小寫 例如 建立乙個檔案readme.md,寫入內容,提交到線上倉庫,然後修改本地檔名為readme.md,提交,會發現沒有變化,無任何提示資訊 其實git預設對於檔名大小寫是不敏感的,所以上面你修改了首字母大寫,但是git並沒有發現 任何改動.那麼如何才能讓git識別檔名大小...
git檔名大小寫不敏感
由於專案檔案命名不規範,需要修改專案中檔名的大小寫。但是當你只修改檔名的大小寫,無法提交,git沒有監控到你做了更改。使用git命令 file from 為原檔名,可以是路徑,例如 src file to 為更改後的檔名 gitmv file from file togit mv命令用來執行移動或者...