为啥 .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 时,请注意可能包含 .env
或 client_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 add
ed 一些文件,它们的更改仍将被跟踪。
要从您的存储库(但不是从您的文件系统)中删除这些文件,请在它们上使用 git rm --cached
。
【讨论】:
git rm --cached file_name.ext 我可以为一个文件更新 gitignore。谢谢。 我这样做了,但 GitHub 仍然想跟踪和添加它们。 git rm -r --cached 文件夹递归删除文件夹上的缓存 忽略文件对我不起作用,但我忽略了像 Pablo 提到的 dist 文件夹,它工作得很好! git rm -r --cached以上是关于为啥 .gitignore 不忽略我的文件?的主要内容,如果未能解决你的问题,请参考以下文章