.gitignore
只会忽略尚未添加到仓库中的文件。如果您已经使用 git add
添加了某些文件,它们的更改仍将被跟踪。
要从您的仓库中删除这些文件(但不从您的文件系统中删除),请对它们使用 git rm --cached
。
.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
文件添加内容。git rm -r --cached .
命令后,回滚所有更改也可以重新添加所有不应被 .gitignore 排除的文件。 - AdamHurwitz按照以下步骤处理gitignore
修改.gitignore文件。
运行git rm -r --cached .
命令。
运行git add .
命令。
git commit -m "提交信息"
你可以使用这个,
git rm -r --cached ./node_modules
如果你想忽略node_modules,例如
如果你的.gitignore文件没有忽略你的文件和目录。
.gitignore只会忽略尚未添加到仓库中的文件。如果你已经将某些文件添加到了git中,它们的修改将被跟踪。对于这样的文件,请使用git rm -r --cached命令从仓库中删除它们(但不会从文件系统中删除)。
git rm -r --cached . #untrack files
git add . #re-adding the files
git commit -m "issue fixed" #commiting changes
git push #pushing changes
rm -r --cached user.json
将取消对 user.json
文件的追踪。 - Muhammad Uzairgitignore
只忽略未被跟踪的文件。你的文件标记为已修改——这意味着它们曾经被提交过,现在被git所跟踪。
要忽略它们,首先需要删除它们,git rm
,然后提交并忽略它们。
首先检查 .gitignore
的编码。
确保编码是 utf-8
。
然后通过使用 git rm --cached 文件名
取消跟踪不想要的文件。
现在你的问题已经解决了。
看这里:.gitignore不起作用 特别是ADTC的评论:
确保你的.gitignore文件使用ANSI或UTF-8编码。如果它使用其他编码方式,比如Unicode BOM,Git可能无法读取该文件。- ADTC 2017年12月14日12:39
我曾经遇到过同样的问题,后来发现我没有正确地创建.gitignore文件。
在我的情况下,由于某种原因我创建了一个.gitignore.txt文件。即使您删除'.txt'扩展名并保存它,Git仍将跟踪.gitignore文件中的文件。
尝试通过终端删除旧文件并创建新的.gitignore文件,方法是'touch .gitignore'
,这对我有用。
git
正在跟踪它们,则.gitignore
文件无效,因为它是针对未跟踪的文件而设计的。在此处查看一个好的解决方案:https://dev59.com/5mAg5IYBdhLWcg3wYZ-6#23673910 - SRG