Git 删除目录
Posted
技术标签:
【中文标题】Git 删除目录【英文标题】:Git remove directory 【发布时间】:2010-12-29 04:18:21 【问题描述】:我在 GitHub (http://github.com/hrickards/php-Crypto) 上有一个存储库,用于我和其他几个人正在进行的一个小项目。我的开发环境是 Aptana Studio,我使用的是 EGit 插件,因为 Aptana 基本上是 Eclipse 底层。今天,设计师发送了网站的 html 和 CSS,以及名为 img 的文件夹中的图像。以前,图像位于名为 images 的文件夹中。什么都不考虑,也懒得更新 CSS 和 HTML,我只是将图像保存在 img 目录中并提交给 Git。但是,GitHub Web 界面同时显示了 img 和 images 目录,其中 images 目录为空。我尝试使用git rm -r images
和git rm images
甚至mkdir images; git add images; git rm -r images
删除图像目录,但无论我尝试什么,我都会得到相同的结果:
fatal: pathspec 'images' did not match any files
.
有人对如何删除图像有任何建议,还是我误解了 Git 或其他什么?
【问题讨论】:
【参考方案1】:Git 不存储有关目录的任何信息,只存储其中的文件。因此,您不能自己添加或删除目录;如果你说git add images
,Git 将添加该目录中的所有文件(与忽略列表不匹配的文件)。
一般来说,只有一个空目录才能存在,如果它实际上包含一个文件,通常是像.gitignore
这样的隐藏文件。
您说您在 GitHub 上看到了一个 images
目录,但我在您链接到的存储库中没有看到它。您确定它在那里,而不仅仅是磁盘上的一个空目录吗?如果它只是您磁盘上的一个空目录,您可以使用rm images
将其删除; Git 不需要知道它。
【讨论】:
你是对的 - 现在不存在了。它肯定不在我的磁盘上,所以我只能假设我的浏览器 Chrome 已经缓存了页面或其他东西,即使我刷新它也是如此。它有这样做的习惯。无论如何感谢您的帮助! @hrickards 只是提示,如果你想强制 chrome(我认为它也适用于其他浏览器,但我没有测试它)完全重新加载页面,请按 [CTRL]+F5。 【参考方案2】:链接的 GitHub 存储库不显示图像目录。
出于技术原因,Git 不会存储空目录,因此只需尝试 rm images
并从本地目录层次结构中删除 images 目录。
【讨论】:
嗨,如上所述,我认为 Chrome 一定已经缓存了该页面,即使我按 F5 或其他方式。无论如何感谢您的帮助!【参考方案3】:试试这个:
git rm -r -f DirectoryName
【讨论】:
物理移除!git rm -r -f --cached DirectoryName
@Sk606:你能把它作为一个单独的答案发布吗?你会得到支持(至少来自我),因为这是真正的解决方案 :)
好的,添加了一些额外的解释【参考方案4】:
这是我使用的,我想你也会想要的。它接近其他答案,但指示 git 不要更改本地文件。
git rm -r -f --cached DirectoryName
-r : 递归
-f : 强制
--cached :仅适用于索引(暂存区)。 Git 不理会本地副本。
【讨论】:
git rm -r -f .
删除了我所有的本地文件副本,不包括在.gitignore
中声明的文件。经过一个令人兴奋和甜蜜的小时后,我设法用git checkout HEAD .
恢复了它们。因此请谨慎使用此命令。当然我忘记了--cached
参数部分。以上是关于Git 删除目录的主要内容,如果未能解决你的问题,请参考以下文章