我正在尝试使用.gitignore
文件排除文件夹templates.js
中的public/app/
文件。我的.gitignore
文件如下所示:
/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js
但是当我签入Git Gui时,templates.js
文件仍然显示在其中。如何使用专门排除文件.gitignore
?
我正在尝试使用.gitignore
文件排除文件夹templates.js
中的public/app/
文件。我的.gitignore
文件如下所示:
/vendor
/node_modules
composer.phar
composer.lock
.DS_Store
templates.js
但是当我签入Git Gui时,templates.js
文件仍然显示在其中。如何使用专门排除文件.gitignore
?
.gitignore
正确吗?
Answers:
与名称“ ignore”可能暗示的相反。.gitignore
仅在您git add
归档时进行咨询:换句话说,基于不会排除已经添加到(存储)索引的文件.gitignore
。
首先,您最好修改,.gitignore
以便不再添加文件。将以下行添加到.gitignore
文件中:
public/app/template.js
接下来,您需要从存储库中排除文件。可能您不想从文件系统中删除文件,可以通过以下方法完成:
git rm --cached public/app/template.js
该--cached
标志确保该文件不会从文件系统中删除。(如果不重要,则可以使用git rm public/app/template.js
,但这将删除该文件)。
之所以.gitignore
不积极使用,是因为有时您可能想覆盖.gitignore
。假设您不想跟踪*.log
文件,可以*.log
在中指定.gitignore
。但是,如果要跟踪的是特定目录,则可以添加git add -f some.log
。该-f
标志强制git
添加文件。
一旦将文件“添加”到git存储库中,无论是否在.gitignore文件中列出该文件,都将继续对其进行跟踪。
我猜想您之前添加了template.js文件,在这种情况下,它将继续跟踪更改,直到将其从存储库中删除为止。从存储库中删除文件后,即可通过.gitignore文件将其正确忽略。
从git仓库(命令行)中删除文件而不删除它的方法是
git rm --cached FILENAME
然后,一旦您这样做并尝试在gitignore中提交文件,它就不会这样做。
请注意,如果您专门添加了gitignore中的文件,则手动添加该文件将覆盖gitignore。
如果您已经在跟踪文件(git add
和git commit
),.gitignore
将无济于事。
我相信您想要的是停止跟踪文件,然后使用.gitignore
排除它。要停止跟踪文件但保留文件,请使用:
git rm --cached <file>
.gitignore
仅忽略要添加的内容。