2016-03-04 46 views
1

我不小心使用了mv來重命名git下的文件。我將 文件從小寫更名爲大寫,保持名稱相同。無法提交文件,意外更名爲mv

MV abc.java ABC.java

,我也做了修改並提交文件之後。

現在我該如何對此文件進行實際的git重命名? Git bash似乎不瞭解ABC.java和abc.java之間的區別。

我不確定主人(被他人)發生了什麼變化,但在轉移到分支後,我無法將更改提交到文件。它說舊的文件索引仍然存在。

$ git的承諾-m 「改名爲大寫」 ABC.java 致命的:不會增加文件別名 'DIR1/ABC.java'( 'DIR1/abc.java' 已經存在於索引)

當我做混帳狀態,它顯示重命名的文件,但不讓我提交重命名的文件。如果我嘗試刪除abc.java(實際上至少在本地不存在),再次(我認爲是因爲不區分大小寫)git刪除了新的。

如果我克隆一個新的回購出來,回購仍然拉出舊名稱(abc.java)的文件,但我所有的變化,直到最近失敗的人在裏面。

+0

你使用的是什麼版本的git? woudl一個git rm --cached abc.java help? (後面是git -A和git commit) – VonC

+0

$ git rm --cached abc.java fatal:pathspec'abc.java'與任何文件都不匹配 我不確定git是否認爲abc.java在git或不。它說它不在git下,但也表示它在索引中。 – AshwiniR

回答

5

簡單的git commit -m「message」沒有任何文件路徑參數爲我做了詭計。它更新了我認爲或至少最終能夠識別abc的索引,並將其更新爲ABC ..謝謝大家..

1

你可以這樣做:

$ git mv {abc,ABC}.java 
+0

可否請你解釋一下上面的表達方式。我有點害怕在沒有理解的情況下使用MV。我將在不久的版本更新 – AshwiniR

+0

@AshwiniR *「嘿混帳,請將'abc.java'文件重命名爲'ABC.java'」* – Agis

+0

如果它與git mv abc ABC相同,那我就不能這麼做。它說abc不在源代碼控制之下 – AshwiniR

0

如果你想知道在哪個提交您更改abc.java,你可以使用:

git log --follow abc.java 

的結果,你可以找到承諾在其中重命名它。

要將文件恢復到原來的名稱,您可以使用git reset--soft標誌,這會將您的更改取消,而不會將其丟棄,使您能夠進行更正並再次提交。

我建議你在嘗試做一些危險的事情之前,閱讀下面有關git reset的鏈接,以便更好地理解它。

Git reset tutorial by Atlassian

Git reset Demystified

0

重命名文件夾名稱到文件夾名的大小寫不敏感的文件系統

與正常mv命令(不混帳MV)簡單的重命名不會得到承認從filechange飯桶。如果你用「git的MV」命令嘗試像下面一行

git mv foldername folderName 

如果您使用的是不區分大小寫的文件系統,例如你是一個Mac上,你沒有將其配置爲區分大小寫,你會遇到一個錯誤信息像這樣的:

致命的:重命名「文件夾名稱」失敗:無效的參數

而且這裏是你可以爲了做什麼,使其工作: -

git mv foldername tempname && git mv tempname folderName 

這分裂了由第一重命名的文件夾到一個完全不同的文件夾名稱重命名過程。將其重命名爲不同的文件夾名稱後,該文件夾最終可以重命名爲新的文件夾名稱。在那些'git mv's之後,不要忘記添加並提交更改。雖然這可能不是一個美麗的技術,但它工作得很好。文件系統仍然不會識別字母大小寫的變化,但git的確將其重命名爲新的文件夾名稱,這就是我們想要的:)