发布于 2026-01-06 12 阅读
0

停止追踪,开始忽略。

停止追踪,开始忽略。

你好世界,

过去几个月我一直在摆弄 GitHub 和 Git,但大多数时候我不小心提交并推送了一些与项目完全无关的文件。通常是环境文件,比如使用 Node.js 时提交的node_modulesbuild目录以及package.json 文件(因为我使用 Gulp 来压缩 CSS 和 JS 文件);还有像_site文件夹和Gemfile.lock这样的文件(因为我使用 Jekyll 来搭建博客)。

这个问题的原因是什么?我忘记在仓库中添加.gitignore文件了。.gitignore文件包含了项目的所有忽略规则(通常是要忽略的文件和文件夹的名称)。但这里有个问题。.gitignore文件只会告诉 Git 忽略那些尚未推送的文件。由于我已经推送过这些文件,所以将它们添加到忽略规则中是行不通的。Git 会持续跟踪这些文件的更改,并不断提醒我提交这些更改。

我可以删除这些文件并将删除操作推送到代码仓库,但是每次构建项目时它们都会被重新创建。所以,这种方法行不通。在网上快速搜索后,我找到了所需的解决方案。有一种方法可以从代码仓库中删除这些文件,同时保留它们在本地。通过在Git Bashcmd等命令行界面 (CLI) 中执行以下命令,我就可以将这些文件从代码仓库中删除,而无需从本地文件系统中删除它们。


    git rm --cached <file name>
    E.g. git rm --cached package.json

Git 中仅从仓库中删除文件的命令详解仅从存储库中删除文件的命令详解


    git rm –r --cached <directory name>
    E.g. git rm –r --cached _sites

如何在 Git 仓库中仅删除文件夹及其内容?以下详细解释如何从存储库中删除文件夹及其内容。

--cached标志会从存储库中删除文件,而不会影响本地副本。该–r标志会递归删除指定目录中的文件。

现在我已经从仓库中删除了这些文件,Git 会将这些已删除文件的本地副本误认为是我新添加到仓库的内容。因此,将这些文件名添加到.gitignore文件中,就能告诉 Git 忽略这些文件,它们就不会再次被推送。

由于这种情况经常发生,我决定把这个帖子发在这里,以免忘记在代码仓库中添加忽略规则。即使我真的忘记了,也知道去哪里找解决方法。

为了简化操作,我找到了一个名为gitignore.io 的网站,它可以根据我在一个文本框中输入的操作系统、IDE 和编程语言自动生成.gitignore文件。以下是 gitignore.io 首页的截图。gitignore.io 网站的屏幕截图

文章来源:https://dev.to/svijaykoushik/stop-tracking-and-start-ignoring-ook