Git:从repo中删除带引号和反斜杠的目录

时间:2015-06-16 09:08:50

标签: git directory repository special-characters

我的git存储库(但不在我的本地系统上)有一个名为

的目录
  

"我的目录\\名"

它包含两个引号和两个反斜杠。

问题是我的仓库中的这个目录无法完全检查内容,因为(错误消息:) git找不到名为

的目录
  

我\目录名

(我仍然可以单独检查每个其他目录和文件..)

我已经试图逃脱角色..

  

git rm -r'"我的\\目录名"'

     

git rm -r \"我的\\\\ directory-name \"

但是git没有找到任何匹配的文件。使用git ls-tree HEAD,我可以看到repo中的目录。

谁能告诉我如何从git repo中删除这样的目录?

3 个答案:

答案 0 :(得分:1)

听起来这个目录的添加来自Linux主机,或者更确切地说是一个创建给定名称的目录没有问题的主机。现在,您在检查Windows上的分支状态时遇到问题,因为无法创建目录。

如果是这种情况,您应该看到git存储库的提交状态与结账时的区别

git status

如果是这种情况,那么您可以解决此问题并删除文件,如下所示:

  • 查看linux盒子上的存储库
  • 使用

    删除linux checkout中的目录

    git rm -r '"the\\dir"'

    git commit

    (引用名称如#39;" \目录"'对我有效)

  • 从linux ceckout
  • 将更改推送到git服务器
  • 获取并更新Windows框上的结帐

答案 1 :(得分:1)

我也遇到了这个问题

git status

产生

Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

deleted:    "\342\200\231"

我尝试了几乎所有我能想到的组合:

git rm --cached -r "\342\200\231"
fatal: pathspec '\342\200\231' did not match any files
git rm --cached -r \342\200\231
fatal: pathspec '342200231' did not match any files
git rm --cached -r \\342\\200\\231
fatal: pathspec '\342\200\231' did not match any files
git rm --cached -r "\\342\\200\\231"
fatal: pathspec '\342\200\231' did not match any files
git rm --cached -r '"\\342\\200\\231"'
fatal: pathspec '"\\342\\200\\231"' did not match any files
git rm --cached -r '"\342\200\231"'
fatal: pathspec '"\342\200\231"' did not match any files
git rm --cached -r '\342\200\231'
fatal: pathspec '\342\200\231' did not match any files
git rm --cached -r '\\342\\200\\231'
fatal: pathspec '\\342\\200\\231' did not match any files
Ubunut上的git版本2.7.4

答案 2 :(得分:0)

我无法尝试这一点,因为我的问题以某种方式解决了。我在另一个Windows系统上逐个检出了repo中的文件和目录,除了“已损坏”目录。然后,当我下次从我的新工作副本提交时,该目录处于删除模式,所以我只是可以推送并且在存储库中删除了该目录。