我的文件名中包含特殊字符的文件(变音符号)。我已经重命名了该文件,但是git
仍然告诉我,我没有为提交而进行更改#39;。但是,我无法记住文件的正确名称,而git只告诉我名称是"Mu\314\210.jpg"
。我不知道假设是什么格式。 utf8
?我尝试了git rm
并复制了字符串,但没有用。
如何找出文件的原始名称,或者如何在不知道确切文件名的情况下删除文件(可能只有文件扩展名)?
编辑:我开始觉得文件是在Windows PC上创建的,并且变音符号的编码也不同。但是,我无法解释为什么我无法删除该文件。我发现那些是八进制表示。然而,尝试Can't remove directories git,Remove a file with a strange name from git和Git: 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 :(得分:5)
使用git rm你可以:
git rm Mu*.jpg
这将从索引中删除所有以Mu开头并以.jpg结尾的文件
如果您在repo中有与该模式匹配的其他文件,则会将其删除。在这种情况下,您可以使用:
git add -u Mu*.jpg
来自git add的手册页:
-u --update
仅匹配索引中已跟踪的文件而不是工作树。这意味着它永远不会 阶段新文件,但它将阶段修改新的内容 跟踪文件,它将从索引中删除文件,如果 工作树中的相应文件已被删除。
(这也将在匹配模式的文件中完成存储库中的任何其他更改,如果您想使用git reset
,您可以随时取消它们)