为什么。gitignore不忽略我的文件?

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

enter image description here

243478 次浏览

.gitignore只忽略还不是存储库一部分的文件。如果你已经git added了一些文件,它们的变化仍然会被跟踪。 要从存储库中删除这些文件(但不能从文件系统中删除),请使用git rm --cached

gitignore只忽略未跟踪的文件。你的文件被标记为已修改——这意味着它们是过去提交的,git现在会跟踪它们。

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

.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文件中。

看看这个:.gitignore不工作 特别是ADTC的注释:

确保你的.gitignore文件使用ANSI或UTF-8编码。如果它使用 比如Unicode BOM, Git可能无法读取 文件。- ADTC 12月14 '17 12:39

你可以用这个,

git rm -r --cached ./node_modules

例如,如果您想忽略node_modules

首先删除索引。锁定文件从你的git回购

rm -f .git/index.lock

然后加上。gitignore

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

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

在我的例子中,出于某种原因,我创建了一个.gitignore.txt文件。Git仍然会跟踪.gitignore文件中的文件,即使你删除了“。txt”。扩展并保存它。

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

遵循这些步骤来工作gitignore

  1. 修改.gitignore文件。

  2. 执行git rm -r --cached .命令。

  3. 执行git add .命令

  4. < p > git commit -m "Commit message"

如果你使用VS Code:

检查.gitignore文件的Encoding Type。如果不是,则更改为UTF-8。 选择Reopen with Encoding选项来更改文件编码

这对我很管用!

enter image description here

对于我的项目中的一些文件,我需要使用git filter-branch,这在 answer中得到了更好的解释。

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

如果你的。Gitignore文件不会忽略您的文件和目录。

.gitignore只是忽略尚未添加到存储库的文件。如果你已经添加了某些文件,他们的修改将被跟踪。使用缓存在这些文件上的git rm -r——从存储库中删除它们(但不能从文件系统中删除)。

git rm -r --cached .        #untrack files
git add .                   #re-adding the files
git commit -m "issue fixed" #commiting changes
git push                    #pushing changes