. gitignore 排除特定文件

我试图使用 .gitignore文件排除位于 public/app/文件夹中的 templates.js。我的 .gitignore文件如下:

/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js

但是,当我检查在 Git 鬼,templates.js文件仍然显示在它。如何使用 .gitignore专门排除文件?

117322 次浏览

一旦一个文件被“添加”到 git 存储库中一次,就会继续跟踪它,而不管它是否在。吉蒂诺档案。

我猜您之前已经添加了 template.js 文件,在这种情况下,它将继续跟踪更改,直到您将其从存储库中删除。文件从存储库中删除后,将通过。吉蒂诺档案。

从 git 存储库(命令行)删除文件而不删除它的方法是

git rm --cached FILENAME

然后,一旦你这样做,并试图提交与文件在您的吉蒂诺尔,它不会这样做。

请注意,如果您专门添加了一个在 gitignore 中的文件,则手动添加该文件将覆盖 gitignore。

与“忽略”这个名字的含义相反。只有当您使用 git add文件时才会查询 .gitignore: 换句话说,已经添加到(该)存储库的索引中的文件不会基于 .gitignore被排除在外。

首先,您最好修改 .gitignore,以便不再添加该文件。在 .gitignore文件中添加以下代码行:

public/app/template.js

接下来需要从存储库中排除该文件。也许你的 不想删除文件从你的文件系统,这可以做到:

git rm --cached public/app/template.js

--cached标志确保文件不会从您的文件系统中删除。(如果不重要,可以使用 git rm public/app/template.js但这会删除文件)。

背景资料

未主动使用 .gitignore的原因是您有时可能希望重写 .gitignore。例如,您不想跟踪 *.log文件,可以在 .gitignore中指定 *.log。但是,如果有一个特定的,你想跟踪你可以添加 git add -f some.log-f标志强制 git添加文件。

如果您已经在跟踪一个文件(git addgit commit) ,那么 .gitignore将无济于事。

我相信您想要的是停止跟踪一个文件,并且 那么使用 .gitignore来排除它。若要停止跟踪文件但保留该文件,请使用:

git rm --cached <file>

在这种情况下,您可以停止跟踪 templates.js

git rm --cached public/app/templates.js

正如其他人所解释的,.gitignore只是忽略要添加的内容。例如,如果您经常使用 git add .并且在 .gitignore中使用 templates.js,那么 git 将不会添加它。