原文地址: https://shanyue.tech/bug/mac-...
通常開發中在 Mac 上開發程序,並使用 Git 進行版本管理,在使用 React 編寫 Component 時,組件名通常建議首字母大寫。html
有些同窗對 React 組件的文件進行命名時,剛開始是小寫,後來爲了保持團隊一致,又改爲了大寫,然而 git 不會發現大小寫的變化,此時就出了問題。git
再梳理一遍這個邏輯:bash
button.js
,提交代碼Button.js
button.js
大小寫發生變化,全部引用 Button.js
的組件發生報錯,失敗來重現一下犯錯的這個過程:服務器
# 剛開始 test 文件是由內容的 ~/Documents/ignorecase-test(master ✔) cat test hello # 把 test 文件改爲首字母大寫的 Test 文件 ~/Documents/ignorecase-test(master ✔) mv test Test # 注意此時 git status 並無發生改變 ~/Documents/ignorecase-test(master ✔) ~/Documents/ignorecase-test(master ✔) git ls-files test ~/Documents/ignorecase-test(master ✔) ls Test
經過 git mv
,在 Git 暫存區中再更改一遍文件大小寫解決問題code
$ git mv test Test
可是修改文件夾時會出現一些問題:htm
fatal: renaming 'dir' failed: Invalid argument
使用下邊這個笨辦法修改:開發
$ git mv dir DirTemp $ git mv DirTemp Dir
那有沒有什麼預防措施?get
Git 默認是忽略大小寫的,若是改爲不忽略大小寫是不就能夠了?不行,這樣會產生更麻煩的問題。it
更改成不忽略大小寫ast
[core] ignorecase = false
如下是產生的問題:
~/Documents/ignorecase-test(master ✔) ls test ~/Documents/ignorecase-test(master ✔) mv test Test ~/Documents/ignorecase-test(master ✗) ls Test ~/Documents/ignorecase-test(master ✗) git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) Test nothing added to commit but untracked files present (use "git add" to track) ~/Documents/ignorecase-test(master ✗) git add -A ~/Documents/ignorecase-test(master ✗) git ls-files Test test ~/Documents/ignorecase-test(master ✗) git rm test rm 'test' ~/Documents/ignorecase-test(master ✗) git add -A ~/Documents/ignorecase-test(master ✗) git ls-files ~/Documents/ignorecase-test(master ✗)
使用 git mv -f
和 mv
同時更改文件名,避免本地文件系統與倉庫中代碼不一致。