Git 删除目录

49

我在GitHub上有一个仓库(http://github.com/hrickards/PHP-Crypto),是我和另外几个人正在开发的一个小项目。我的开发环境是Aptana Studio,并使用EGit插件,因为Aptana实际上是Eclipse。今天设计师用一个名为img的文件夹包含了网站HTML,CSS和图片。以前,这些图片存放在名为images的文件夹中。我懒得更新CSS和HTML,也没有考虑太多,所以我只是把图片放在了img目录下并提交到了Git。然而,GitHub Web界面显示出了img和images两个目录,而且images目录为空。我尝试使用git rm -r imagesgit rm images以及mkdir images; git add images; git rm -r images删除images目录,但无论我尝试什么方法,都得到相同的结果:fatal: pathspec 'images' did not match any files

请问有没有人能提供如何删除images目录的建议,或者是我对Git产生了什么误解?

4个回答

80

这是我使用的方法,我认为你也会想用。它与其他答案非常接近,但指示git不要更改本地文件。

git rm -r -f --cached DirectoryName
  • -r: 递归
  • -f: 强制
  • --cached: 仅作用于索引(暂存区)。Git会保留本地副本。

1
git rm -r -f . 删除了我本地所有文件的副本,但排除了在 .gitignore 中声明的文件。经过一番艰苦卓绝的努力,我用 git checkout HEAD . 成功恢复了它们。因此,请谨慎使用此命令。当然,我已经忘记了 --cached 参数部分。 - Hmerman6006

41

Git不会存储目录的任何信息,只会存储其中的文件。所以,您不能添加或删除目录本身;如果您说git add images,Git将添加该目录中的所有文件(不匹配忽略列表的文件)。

通常,唯一可能存在空目录的方式是它实际上包含一个文件,通常是像.gitignore这样的隐藏文件。

您说您在GitHub上看到了一个images目录,但我在您链接的仓库中没有看到它。您确定它在那里,而不仅仅是您磁盘上的空目录吗?如果它只是您磁盘上的空目录,您可以使用rm images将其删除;Git不需要知道它。


你说得对 - 现在确实没有了。它绝对不在我的磁盘上,所以我只能假设我的浏览器Chrome即使在我刷新页面时也缓存了该页面或其他什么东西。它有这样的习惯。无论如何,还是谢谢你的帮助! - hrickards
@hrickards 只是一个小提示,如果你想强制Chrome(我认为其他浏览器也可以,但我没有测试过)完全重新加载页面,请按[CTRL]+F5。 - michael_

38

试试这个:

git rm -r -f DirectoryName

19
它是物理性去除! - quux
28
请使用git rm -r -f --cached 目录名称命令,这将保留本地拷贝不受影响! - Sk606
2
@Sk606:你能把它作为单独的答案发布吗?你会得到赞(至少来自我),因为这是真正的解决方案 :) - Sk8erPeter
当然,我添加了一些额外的解释。 - Sk606

3

链接的 GitHub 存储库中未显示图像目录。

由于技术原因,Git 不会存储空目录,因此只需尝试使用 rm images 命令从本地目录结构中删除图像目录即可。


嗨,正如上面所说的,我认为Chrome即使在我按F5刷新页面时也可能缓存了该页面。无论如何,感谢您的帮助! - hrickards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接