从git跟踪中删除文件夹


403

我需要从跟踪中排除文件夹(名称上传)。我试着跑

git rm -r --cached wordpress/wp-content/uploads

然后,我将路径添加到.gitignore

/wordpress/wp-content/uploads

但是当我运行时,git status它们显示为已删除。如果我尝试提交更改,则文件将被删除,而不仅仅是从跟踪中删除。

我究竟做错了什么?

我也尝试过

git update-index --assume-unchanged <file>

但这似乎仅取消跟踪文件。但是我需要从跟踪中删除整个文件夹(包括子文件夹)。


删除并不意味着git会删除您的文件。但是,如果您使用reset --hard,它将使用。
凯塔尔2014年

2
如@keltar所述,提交不会导致您的文件被删除。它将从Git删除它们,但是您的工作副本仍将包含它们。但是,如果您pull在其他地方提交,则这些文件将从新系统中删除。
克里斯

Answers:


866

我在Google搜索“从跟踪中删除文件夹”时遇到了这个问题。OP的问题使我找到了答案。我在这里为子孙后代总结。

如何从git存储库中删除文件夹而不从本地计算机(即开发环境)中删除它?

回答

步骤1.将文件夹路径添加到仓库的根.gitignore文件中。

path_to_your_folder/

步骤2.从本地git跟踪中删除文件夹,但将其保留在磁盘上。

git rm -r --cached path_to_your_folder/

步骤3.将更改推送到git repo。

从Git的角度来看,该文件夹将被视为“已删除”(即,它们是过去的历史记录,但不是最新的提交,并且从该存储库中提取的人员将把文件从树中删除),但保留在您的工作目录中因为你用过--cached


2
快速问题,文件夹路径必须是完整路径吗?还是仅以git仓库为基础的路径?
HMSCelestia

我相信这是一条完整的道路,但不确定。
Tod Birdsall,2016年

7
“从此存储库中提取的人将把文件从树中删除”我可以防止这种情况吗?
Leo Gasparrini

这样可以正确地将我的文件从分支上的跟踪中删除,但是在合并后将它们删除了!
哈罗德

1
对我来说仍然存在。另外-提交时我应该取消选择文件夹中的那些文件吗?我尝试了两种方式。如果取消选择,则不允许推送,但是后来我在应跟踪的另一个文件中更改了一个字符。仍然无济于事
Darius.V

44

这对我有用:

git rm -r --cached --ignore-unmatch folder_name

--ignore-unmatch 在这里很重要,如果没有该选项,git将会在索引中不在的第一个文件上以错误退出。


unknown option 'ignore unmatched'
Inigo

如果目录为空,这是一个重要的标志,谢谢!
MNN

如果您也想从目录中删除某些文件扩展名,则非常有用:git rm -r --cached --ignore-unmatch .idea/*.xml
takanuva15


8

我知道这是一个旧线程,但是我只想添加一点,因为标记的解决方案无法为我解决问题(尽管我尝试了很多次)。

我实际上可以停止git form跟踪文件夹的唯一方法是执行以下操作:

  1. 备份本地文件夹,并将其放在安全的地方。
  2. 从本地存储库中删除文件夹
  3. 确保清除缓存 git rm -r --cached your_folder/
  4. 添加your_folder/到.gitignore
  5. 提交变更
  6. 将备份重新添加到您的仓库中

现在,您应该看到不再跟踪该文件夹。

不要问我为什么清除缓存对我不起作用,我不是Git超级向导,但这就是我解决问题的方法。


谢谢!!!Git令我发疯,没有忽略eclipse .metadata文件夹。按照您的步骤使用eclipse .metadata文件夹,它终于可以工作了。
MasterN8

5

从git文档:

您可能想要做的另一件事是将文件保留在工作树中,但将其从暂存区中删除。换句话说,您可能希望将文件保留在硬盘上,但不再需要Git对其进行跟踪。如果您忘记在.gitignore文件中添加某些内容而意外地将其暂存,例如大型日志文件或一堆.a编译文件,则此功能特别有用。为此,请使用--cached选项:

$ git rm --cached readme.txt

因此,也许不包括“ -r”?


1
OP已经尝试过--cached。该-r选项适用于“递归”,应包含在此实例中。
克里斯

我发现这很有用。我一直在寻找如何在文件夹上执行操作,然后查看在文件上执行操作的方法。我对此评论加分。
亮起
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.