首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用特殊字符的Git签出/删除文件

使用特殊字符的Git签出/删除文件
EN

Stack Overflow用户
提问于 2014-05-22 13:40:39
回答 1查看 9.7K关注 0票数 11

我在文件名(umlauts)中有一个带有特殊字符的文件。此后,我重新命名了该文件,但git仍然告诉我,我有“未为提交而进行的更改”。但是,我不记得文件的正确名称,而git只告诉我名称是"Mu\314\210.jpg"。我不知道这应该是什么格式。utf8?我尝试了git rm并复制了字符串,但是没有工作。

如何才能找到文件的原始名称,或者如何在不知道确切的文件名(可能只有文件扩展名)的情况下删除文件?

编辑:我开始觉得这个文件是在Windows上创建的,并且在那里的编码是不一样的。但是,我无法解释为什么我不能删除该文件。

我刚发现这些都是八进制表示。然而,尝试来自Can't remove directories gitRemove a file with a strange name from gitGit: how to specify file names containing octal notation on the command line的解决方案并没有帮助。特别是解决方案

代码语言:javascript
复制
git rm `printf "Mu\314\210.jpg"`

没有删除文件。它仍然给了我"Mu\314\210.jpg" didn't match any files。还有其他方法可以删除文件吗?

printf告诉我"Mu\314\210.jpg""Mü.jpg"。但是,我的Mac上的ü八进制表示应该是\303\274。这就是为什么我认为u\314\210来自Windows。不过,仍不确定这有何帮助。

我只是试着运行git-rm建议的git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached。我是安静的积极,因为文件不能删除,直到它被再次添加。我将尝试用旧的文件名获取文件,然后删除它。

好的,添加旧文件也没有帮助。Mac似乎自动改变八进制表示形式。似乎最后的机会是在Windows上删除它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 14:03:12

使用git rm,您可以:

代码语言:javascript
复制
git rm Mu*.jpg

这将从索引中删除以Mu开头、以.jpg结尾的所有文件。

如果您有其他文件在回购匹配的模式,他们将被删除。在这种情况下,您可以使用:

代码语言:javascript
复制
git add -u Mu*.jpg

在git的手册页中添加:

-u --更新 只匹配索引中已经跟踪的文件,而不是工作树。这意味着它永远不会生成新的文件,但是它将逐步修改跟踪文件的新内容,如果工作树中的相应文件已被删除,它将从索引中删除文件。

(这还将在与模式匹配的文件中完成存储库中的任何其他更改,如果需要使用git reset,则始终可以在此之后解除它们)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23808611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档