从git tracking中删除文件夹

时间:2014-06-18 16:10:23

标签: git git-rm

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

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

然后我添加了.gitignore的路径

/wordpress/wp-content/uploads

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

我做错了什么?

我也试过

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

但这似乎只解开文件。但我需要从跟踪中删除整个文件夹(包括子文件夹)。

7 个答案:

答案 0 :(得分:625)

我在谷歌搜索“git从跟踪中移除文件夹”时遇到了这个问题。 OP的问题引出了我的答案。我在这里为后代总结一下。

<强>问题

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

<强>答案

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

path_to_your_folder/

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

git rm -r --cached path_to_your_folder/

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

从Git的角度来看,该文件夹将被视为“已删除”(即它们在过去的历史记录中,但不在最新的提交中,并且从此回购中提取的人将从其树中删除文件),但请继续您的工作目录,因为您已使用--cached

答案 1 :(得分:23)

这对我有用:

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

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

答案 2 :(得分:7)

忘记目录以递归方式将/*/*添加到路径:

git update-index --assume-unchanged wordpress/wp-content/uploads/*/*

使用git rm --cached不利于协作。更多详情:How to stop tracking and ignore changes to a file in Git?

答案 3 :(得分:5)

来自git文档:

您可能想要做的另一个有用的事情是将文件保留在工作树中,但将其从暂存区域中删除。换句话说,您可能希望将文件保留在硬盘驱动器上,但不要让Git跟踪它。如果您忘记在.gitignore文件中添加内容并意外地将其添加到某个日志文件或一堆.a编译文件中,这将非常有用。为此,请使用--cached选项:

$ git rm --cached readme.txt

所以也许不要包括&#34; -r&#34;?

答案 4 :(得分:2)

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

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

  1. 备份本地文件夹并放在安全的地方。
  2. 从本地回购删除文件夹
  3. 确保已清除缓存git rm -r --cached your_folder/
  4. 添加your_folder/到的.gitignore
  5. 提交更改
  6. 添加备份回到您的回购

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

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

答案 5 :(得分:1)

步骤2.5:进行更改:

>git commit

如果您不先这样做就没有任何帮助!

答案 6 :(得分:1)

如果文件已提交并推送到github,则应该运行

git rm --fileName

git ls-files,以确保文件已删除或未跟踪

git commit -m "UntrackChanges"

git push