.gitignore排除特定文件

use*_*781 68 git gitignore

我正在尝试使用.gitignore文件来排除templates.js位于public/app/文件夹中.我的.gitignore文件看起来像这样:

/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js
Run Code Online (Sandbox Code Playgroud)

但是当我检查Git Gui时,templates.js文件仍显示在其中.如何使用.gitignore?专门排除文件?

Wil*_*sem 111

与"忽略"这个名称的含义相反..gitignore只有在您的git add文件时才会查询:换句话说,已经添加到(索引)存储库的文件不会被排除在外.gitignore.

首先,您最好修改.gitignore不再添加文件.将以下行添加到.gitignore文件中:

public/app/template.js
Run Code Online (Sandbox Code Playgroud)

接下来,您需要从存储库中排除该文件.您可能不希望从文件系统中删除该文件,这可以通过以下方式完成:

git rm --cached public/app/template.js
Run Code Online (Sandbox Code Playgroud)

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

背景

原因.gitignore是没有主动使用是因为你有时可能想要覆盖.gitignore.比如说你不想跟踪*.log文件,你可以*.log在中指定.gitignore.但如果您想要跟踪特定的一个,则可以添加git add -f some.log.该-f标志强制git添加的文件.

  • @mLstudent33 我不是 git 专家,但只是想提出这样的担忧:您的凭据可能仍然存在于该存储库的以前版本中。我可能是错的,或者你已经做了一些事情——只是尽我所能提供一点帮助!:) (4认同)
  • 救星,让我的凭据向公众开放 (3认同)

BTo*_*TKD 14

一旦文件被"添加"到git存储库一次,它将继续被跟踪,无论它是否列在.gitignore文件中.

我猜你之前添加了template.js文件,在这种情况下它会继续跟踪更改,直到你从存储库中删除它.从存储库中删除文件后,将通过.gitignore文件正确忽略该文件.

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

git rm --cached FILENAME
Run Code Online (Sandbox Code Playgroud)

然后,一旦你这样做并尝试使用你的gitignore中的文件提交,它就不会这样做.

请注意,如果您专门添加gitignore中的文件,则手动添加文件将覆盖gitignore.


ins*_*bra 10

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

git rm --cached public/app/templates.js
Run Code Online (Sandbox Code Playgroud)

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


Ros*_*oss 9

如果您已经在跟踪文件(git add在其上git commit),.gitignore则无济于事.

我相信你想要的是停止跟踪文件,然后.gitignore它来排除它.要停止跟踪文件但保留文件,请使用:

git rm --cached <file>