为啥 .gitignore 不忽略我的文件?

Posted

技术标签:

【中文标题】为啥 .gitignore 不忽略我的文件?【英文标题】:Why is .gitignore not ignoring my files?为什么 .gitignore 不忽略我的文件? 【发布时间】:2018-01-06 02:37:29 【问题描述】:

见下图。我的 .gitignore 文件应该忽略 src/dist 中的所有文件,但不是。

【问题讨论】:

【参考方案1】:

首先检查.gitignore 编码。 确保编码 id utf-8. 然后使用git rm --cached filename 未跟踪不需要的文件 现在你的问题解决了?

【讨论】:

【参考方案2】:

gitignore 只忽略未跟踪的文件。您的文件被标记为已修改 - 表示它们过去已提交,现在 git 会跟踪它们。

要忽略它们,您首先需要删除它们,git rm 它们,提交然后忽略它们。

【讨论】:

【参考方案3】:

按照以下步骤操作 gitignore

    .gitignore 文件中进行更改。

    运行git rm -r --cached . 命令。

    运行git add . 命令

    git commit -m "Commit message"

【讨论】:

我必须添加 git push -u origin main 才能看到变化,但这对我有用,继续加油!【参考方案4】:

对于我项目中的一些文件,我需要使用git filter-branch,这在this answare 中有更好的解释。

【讨论】:

【参考方案5】:

如果您使用的是 VS Code

检查.gitignore 文件的编码类型。如果不是,请将其更改为UTF-8。 选择Reopen with Encoding 选项以更改文件编码。

这对我有用!

【讨论】:

【参考方案6】:

我遇到了同样的问题,然后我意识到我没有正确创建 .gitignore 文件。

就我而言,出于某种原因,我创建了一个 .gitignore.txt 文件。即使您删除了“.txt”,Git 仍会跟踪 .gitignore 文件中的文件。扩展并保存。

尝试删除您的旧文件并在终端中通过'touch .gitignore' 创建一个新的 .gitignore 文件,这为我解决了问题。

【讨论】:

【参考方案7】:

.gitignore 文件可确保未被Git 跟踪的文件保持未跟踪状态。

仅将文件夹/文件添加到.gitignore 文件不会取消对它们的跟踪——它们仍将由Git 跟踪。

要取消跟踪文件,必须从存储库中删除.gitignore 文件中列出的跟踪文件。然后重新添加它们并提交您的更改。

最简单、最彻底的方法是删除并缓存存储库中的所有文件,然后将它们全部添加回来。不会跟踪.gitignore 文件中列出的所有文件夹/文件。从存储库的顶部文件夹中运行以下命令:

git rm -r --cached .
git add .

然后提交您的更改:

git commit -m "Untrack files in .gitignore"

请注意,任何先前包含不需要的文件的提交都将保留在提交历史记录中。推送到 GitHub 时,请注意可能包含 .envclient_secret.json 文件的提交历史记录。

最佳实践是创建一个 .gitignore 文件,并在启动项目时使用您不想跟踪的文件夹/文件填充它。但是,在意识到正在跟踪和存储不需要的文件后,通常需要添加到 .gitignore 文件中。

【讨论】:

感谢您的回答。这真的很有帮助。也不要忘记将 repo 推送到 git 在使用git rm -r --cached . 回滚所有更改后,也可以重新添加所有不应使用 .gitignore 排除的文件。 这应该被标记为正确答案 这是更完整的答案 这应该被标记为正确答案【参考方案8】:

最好在开始和提及我们想要忽略的文件时创建 .gitignore 文件。 如果你想忽略一些文件然后执行 git rm -r --cached

【讨论】:

有时候,我们需要一台时光机……【参考方案9】:

你可以用这个,

git rm -r --cached ./node_modules

如果你想忽略node_modules,例如

【讨论】:

【参考方案10】:

首先从你的 git repo 中删除 index.lock 文件

rm -f .git/index.lock

然后添加.gitignore

git add .gitignore

【讨论】:

您能否详细说明这些操作的作用?【参考方案11】:

看看这个:.gitignore is not working 尤其是 ADTC 的评论:

确保您的 .gitignore 文件使用 ANSI 或 UTF-8 编码。如果它使用 像 Unicode BOM 之类的其他东西,Git 可能无法读取 文件。 – ADTC 2017 年 12 月 14 日 12:39

【讨论】:

【参考方案12】:

.gitignore 仅忽略尚不属于存储库的文件。如果您已经git added 一些文件,它们的更改仍将被跟踪。 要从您的存储库(但不是从您的文件系统)中删除这些文件,请在它们上使用 git rm --cached

【讨论】:

git rm --cached file_name.ext 我可以为一个文件更新 gitignore。谢谢。 我这样做了,但 GitHub 仍然想跟踪和添加它们。 git rm -r --cached 文件夹递归删除文件夹上的缓存 忽略文件对我不起作用,但我忽略了像 Pablo 提到的 dist 文件夹,它工作得很好! git rm -r --cached 工作。谢谢。

以上是关于为啥 .gitignore 不忽略我的文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Git 不忽略我指定的文件?

如何创建.gitignore文件,忽略git不必要提交的文件

Git全局忽略不起作用

.gitignore 被 Git 忽略

idea git提交文件忽略(.gitignore)

Git添加忽略文件 .gitignore文件不起作用