1. 程式人生 > >當git上檔名大小寫重新命名的修改時(git大小寫敏感/預設不敏感),如何重新命名並提交

當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