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 imagesgit 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 删除目录的主要内容,如果未能解决你的问题,请参考以下文章

git 删除远程仓库中的目录或文件

git删除远程仓库的文件或目录

[GIT]如何删除Git本地仓库

[GIT]GIT之删除远程仓库中的目录或文件

Git 删除目录

sh 从git和local中删除目录