當git上文件名大小寫重命名的修改時(git大小寫敏感/默認不敏感),如何重命名並提交

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上遠程分支

1

<span style="font-size: 13px">git commit -m '提交說明'</span><br><span style="font-size: 13px">git push</span>

 使用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又有何意義?

哎。。。對於設置了大小寫敏感的修改文件名大小寫要怎麼提交呢?

首先 記住 將你的文件備份!

然後刪除

1

git rm DataExt.java

,將備份文件重命名Dataext.java放到路徑下,添加

1

git add Dataext.java

,提交

1

git commit -m '提交說明'

源地址:https://www.cnblogs.com/samwang88/p/6611947.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章