2014-05-22 46 views
3

我在文件名(元音變音)中有特殊字符的文件。我自從已經重命名了該文件,但git仍然告訴我,我的'變更未提交提交'。但是,我不記得文件的正確名稱,而git只告訴我名字是"Mu\314\210.jpg"。我不知道應該是什麼格式。 utf8?我試過git rm並複製了字符串,但沒有奏效。Git結帳/刪除具有特殊字符的文件

如何才能找到文件的原始名稱或如何在不知道確切文件名(可能只有文件擴展名)的情況下刪除文件?

編輯:我開始有這種感覺,該文件是在Windows PC上創建的,並且變音符號的編碼在那裏不同。但是,我無法解釋爲什麼我無法刪除文件。

我剛剛發現那些是八進制表示。然而,試用Can't remove directories git,Remove a file with a strange name from gitGit: how to specify file names containing octal notation on the command line的解決方案並沒有幫助。特別是解決方案

git rm `printf "Mu\314\210.jpg"` 

沒有刪除該文件。它仍然給我"Mu\314\210.jpg" didn't match any files。有其他方法可以刪除文件嗎?

printf告訴我"Mu\314\210.jpg""Mü.jpg"。但是,我的Mac OSX上的ü八進制表示應該是\303\274。這就是爲什麼我假設u\314\210來自Windows PC。仍然不知道如何幫助,雖然。

我只是試圖運行什麼git-rm建議git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached。我很安靜,現在該文件不能刪除,直到它再次被添加。我將嘗試使用舊文件名獲取該文件,然後將其刪除。

好的,添加舊文件也沒有幫助。 Mac OSX似乎會自動更改八進制表示法。似乎最後的機會是它在Windows PC上刪除它。

+0

你嘗試(在克隆,安全) :'git rm - Mu *'看看是否有用? (或'git rm --cached - Mu *'如果該文件不在磁盤上,但只保留在Git repo索引中) – VonC

+0

不幸的是它不起作用。當我輸入這個命令時,我得到一個'fatal:pathspec'錯誤。即使我只是輸入'git rm - M *'。 – user3607973

回答

4

使用Git RM你可以這樣做:

git rm Mu*.jpg 

這將從索引中刪除所有文件與穆啓動和以.jpg

結束如果在回購其他文件匹配模式的他們將被刪除。在這種情況下,你可以使用:

git add -u Mu*.jpg 

從混帳的人頁面添加:在指數

-u --update

只有對陣已經跟蹤文件,而不是工作樹。這意味着它永遠不會 階段新文件,但它將階段修改新的內容 跟蹤的文件,並且它將刪除索引中的文件,如果在工作樹中的 相應的文件已被刪除。

(這也將上演,在匹配模式的文件進行存儲庫的任何其他變化,你可以隨時後unstage他們,如果你想使用git reset

+0

'git status'仍然告訴我變化沒有上演。我嘗試刪除的文件仍被標記爲「已刪除」。 – user3607973

+0

'git add -u'幫助。哇。 – user3607973