我把以前由 Git 跟踪的文件放在.gitignore 列表中. 但是,文件在编辑后仍然显示在 git 状态。


当前回答

这就是我如何解决我的问题:

git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD git push

在此,我们基本上正在试图在以前的任务中重写该特定文件的历史。

有关更多信息,您可以在此处参阅过滤器分支的男性页面。

来源:从存储库中删除敏感数据 - 使用过滤器分支

来源:Git:如何删除错误的大文件

其他回答

下面的命令系列将从 Git 索引中删除所有项目(不是工作目录或本地存储库),然后更新 Git 索引,同时遵守 Git 忽略。

首先:

git rm -r --cached .
git add .

然后:

git commit -am "Remove ignored files"

或者作为一个单线:

git rm -r --cached . && git add . && git commit -am "Remove ignored files"

您想要跟踪很多文件,或者您更新了您的.gitignore 文件

来源: Untrack 已添加到基于.gitignore 的 Git 存储库

假设你已经添加 / 订购了一些文件到你的 Git 存储库,然后你将它们添加到你的.gitignore 文件;这些文件将仍然存在于你的存储库指数。

步骤1:承诺所有的变化

在进行之前,请确保您的所有更改都完成,包括您的.gitignore 文件。

步骤2:从存储库中删除一切

要清理您的存储库,请使用:

git rm -r --cached .

如果你想先尝试它做什么,添加 -n 或 - 干燥的旗帜来测试事情。

步骤3:阅读一切

git add .

git commit -m ".gitignore fix"

您的存储库很干净:)

将更改推到您的远程,以便看到更改在那里有效。

在我的案例中,我在几个目录中有几个.lock 文件,我需要删除。

git rm -r --cached **/*.lock

这样做,在我所在的“根”下进入每个文件夹,并排除所有符合模式的文件。

把它移动出来,承诺,然后把它移动回来。

这对我来说在过去已经工作了,但可能有更“迷人的”方式来实现这一点。

如果没有这些问题为您工作,您将希望确认您的.gitignore 文件实际上是一个.gitignore 文件,而不是文本文件, JSON 文件或类似文件。

确保它看起来像这样。