所以我在gitignore中有/ vendor并希望在子文件夹中排除某些文件,但它不起作用,它们仍然被忽略。检查了git文档,这里的一些线程仍然没有运气,知道我缺少什么?
这就是我得到的:
vendor
!vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php
!vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.php
答案 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.