在.gitignore中忽略父文件夹时跟踪文件

时间:2018-04-05 07:46:19

标签: git bitbucket gitignore

所以我在gitignore中有/ vendor并希望在子文件夹中排除某些文件,但它不起作用,它们仍然被忽略。检查了git文档,这里的一些线程仍然没有运气,知道我缺少什么?

这就是我得到的:

vendor
!vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
!vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.php

1 个答案:

答案 0 :(得分:4)

您可以使用git add -f强行添加一次,然后在回购中跟踪它们:

git add -f vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
git add -f vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.php

正如Daniel在评论中所提到的,根据the documentation

  

可选前缀“!”否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。如果排除该文件的父目录,则无法重新包含文件。出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用。

如果您尝试在文件上使用check-ignore来识别哪个规则忽略文件,这一点也很清楚:

Test $ mkdir -p vendor/laravel/framework/src/Illuminate/Auth/Passwords && touch vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php

Test $ cat .gitignore 
vendor
!vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php

Test $ git check-ignore -v vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
.gitignore:1:vendor vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php

Test $ git add vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
The following paths are ignored by one of your .gitignore files:
vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
Use -f if you really want to add them.