git默認是大小寫不敏感!!!
加了感嘆號是什么意思呢,意思就是這本身就是一個坑,本人使用的IDE是idea(網上說Eclipse可以避開問題),這個IDE本身就集成了git,但是如果要在terminal使用git命令,還需先安裝並配置好git環境變量,然后在idea配置git安裝路徑。。。。扯遠了,先說說這個坑,在idea上對文件大小寫重命名時,比如DataExt.java改成Dataext.java,git是不會做辨認的,即使你看到的是Dataext.java,等到你push到遠程分支上去,你會發現分支上的還是DataExt.java,這時別人要是merge你的分支或者checkout下來時,就報錯啦。
如何避免:
哎,你上網一搜,都是說把git設置成大小寫敏感 git config core.ignorecase false(其實這也是個坑)。。。。
我就分情況解決吧:
1、先說一下git大小寫不敏感,也就是默認的情況下如何解決:(建議默認)
使用命令:git mv DataExt.xml Dataext.xml
ps: 文件夾重命名 git mv foldername tempname && git mv tempname folderName (在大小寫不敏感的系統中,如windows,重命名文件夾的大小寫,使用臨時文件名)
此時暫存區的文件已改動
接下來commit到本地分支,最后push上遠程分支
git commit -m '提交說明'
git push
使用IDE的可以操作界面提交並推送。
2、接下來要說那些設置了大小寫敏感的怎么提交:(不建議設置)
為什么說設置了大小寫敏感也是個坑,因為假設
分支 | 文件 |
A | DataExt.java |
B | Dataext.java |
我在本地的分支B設置了git config core.ignorecase false,並且文件是小寫的Dataext.java,接下來如果merge了分支A的話,會出現錯誤:
error: The following untracked working tree files would be overwritten by merge:
DataExt.java
意思是:分支A中的DataExt.java將會重寫分支B的文件
那這樣的話,假設路人甲和乙都是使用分支A的,你merge他們,就會提示文件將被重寫。。。坑啊!
解決方法都是將core.ignorecase設置為true,然后再進行操作,那設置為false又有何意義?
哎。。。對於設置了大小寫敏感的修改文件名大小寫要怎么提交呢?
首先 記住 將你的文件備份!
然后刪除
git rm DataExt.java
,將備份文件重命名Dataext.java放到路徑下,添加
git add Dataext.java
,提交
git commit -m '提交說明'