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

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 '提交說明'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM