2015-12-11 195 views
1

我排除了node_modules中除了某些文件以外的所有文件。所以我在git忽略文件中編寫代碼,如下所示。Gitignore文件無法正常工作

node_modules/angular/angular.js 
!node_modules/angularfire/dist/angularfire.js 
!node_modules/todomvc-app-css/index.css 
!node_modules/todomvc-common/base.css 
!node_modules/todomvc-common/base.js  

node_modules/ 

但它不起作用。我怎麼能解決這個問題?

+0

請澄清「不行」:顯示您獲得的行爲,並說出您的預期。我的猜測是,你必須把!遵守其他規則。 –

回答

2

正如我在 「How do I add files without dots in them (all extension-less files) to the gitignore file?」 詳細的,主要是有一個規則與.gitignore要記住:

It is not possible to re-include a file if a parent directory of that file is excluded. ()
:除非某些條件,在滿足混帳2.7+)

這意味着,當你排除一切時('node_modules/'),你必須白名單文件夾,才能白名單文件。

# Ignore everything under node_modules 
node_modules/* 

# Exceptions the subfolders 
!node_modules/**/ 

# Exceptions the files (since the parent folders are not ignored) 
!node_modules/angularfire/dist/angularfire.js 
!node_modules/todomvc-app-css/index.css 
!node_modules/todomvc-common/base.css 
!node_modules/todomvc-common/base.js 
2

我覺得這裏的問題是,要排除的完整node_modules文件夾後,您排除了某些文件,這可能會覆蓋以前的夾雜物/排除。這意味着在開始時你說你想包含和排除node_modules文件夾中的一些文件,但是稍後你只需告訴git「好,不要忘了,只是忽略整個文件夾」。因此,順序轉向可能是一個很好的開始。

但是我們可能還沒有完成。另外,當你排除整個文件夾而不是文件時,如果你想排除它們,git將無法在其中找到任何文件。我們假設你忽略了文件夾node_modules,但是想在此之後排除其中的一些文件。它可能不會工作,因爲沒有文件夾來檢查這些文件了。該文件夾實際上被忽略。

因此,您可以嘗試的是忽略文件夾中的所有文件,然後對這些文件進行排除。

# ignore all files in the folder 
node_modules/**/* 

# but not those files 
!node_modules/angularfire/dist/angularfire.js 
!node_modules/todomvc-app-css/index.css 
!node_modules/todomvc-common/base.css 
!node_modules/todomvc-common/base.js 

希望這個作品。