2016-03-16 56 views
0

我知道SO上有十幾個帖子。有些可以追溯到'12。我無法得到它的工作。在現代世界的情況下。我有一個結構的angularJS項目像如何忽略在GIT中提交的子目錄

. 
├── app 
│ ├── app.js 
│ ├── assets 
│ ├── bower_components 
│ ├── controllers 
│ ├── index.html 
│ ├── services 
│ └── views 
├── bower.json 
├── e2e 
│ ├── pages 
│ ├── protractor.conf.js 
│ └── scenarios 
├── karma.conf.js 
├── LICENSE 
├── package.json 
└── README.md 
|__ .gitignore 

在我bower_components,我已經編輯模塊,以滿足我的需求,我需要提交它,這樣的變化反映了每個人。但不是所有的bower_components。

所以我在app/bower_components/chartist中有一個模塊,我想提交其餘的我想忽略的模塊。

here我想這

logs/* 
!.gitkeep 
node_modules/ 

!app/bower_components/ 

app/bower_components/* 
!app/bower_components/chartist 

tmp 
.DS_Store 
.idea 
app/jspm_packages 

它不工作。在我的git狀態中,我將此視爲輸出

.gitignore~ 
app/bower_components/ 

它包含所有bower_components。爲什麼?我如何只包含圖表文件夾並省略其餘部分? 規則是排斥太過混亂。任何人都可以爲我簡化它嗎?

編輯:我的問題是詢問如何在.gitignore中添加文件夾,但在其中保留一個子文件夾。我需要跟蹤更改。我不明白怎麼能有人考慮這個問題的重複。

+1

嘗試刪除!app/bower_components /,我的結構與你不一樣,但對於我來說,提供的鏈接模式工作正常:1. maindir/* 2.!maindir/subdir1將此添加到.itignore ,命令git add --all只廣告subdir1,即使在maindir目錄中有更多的子目錄和文件 – Zavael

+0

@Zavael你能寫這個答案,以便我可以接受它 –

+0

可能有[Stop tracking and ignore更改爲Git中的文件](http://stackoverflow.com/questions/936249/stop-tracking-and-ignore-changes-to-a-file-in-git) – 1615903

回答

1

Git將繼續跟蹤回購中的文件,即使它們被忽略。如果在將dir添加到.gitignore時檢入了所有app/bower_components,那麼git仍會跟蹤對已存在於repo中的任何文件的更改。如果你在那裏創建一個新文件,它將被忽略。

如果您只希望追蹤其中的一個文件,請從回購中刪除其餘文件。現在你可以將目錄下的gitignore,然後git add -f app/bower_components/chartist。這會將文件添加到回購站,覆蓋您的gitignore。將會跟蹤文件的更改。

另外,使用你的gitignore與!app/bower_components/chartist線。您不需要強制添加,並且它作爲您有意不忽略該文件的文檔。

+0

請參閱http://stackoverflow.com/questions/936249/stop-跟蹤和忽略,changes- to-a-file-in-git以瞭解如何停止跟蹤'app/bower_components'。 (或者只是'git rm --cached app/bower_components')。 –

0

創建一個.gitignore文件,所以要創建一個filename.txt文件並更改擴展名。

然後通過這個命令來更改該文件的名稱: -

rename filename.txt .gitignore 

然後你就可以打開該文件,並寫入所有不想將在存儲庫中添加的文件。

app/bower_components/ 

模式目錄/排除名爲dir和(隱式)它下面的一切目錄。對於dir /,Git永遠不會查看dir下的任何內容,因此決不會將任何「un-exclude」模式應用於dir下的任何內容。

app/bower_components/* 

!app/bower_components/chartist 

模式目錄/ *沒有提到目錄本身;它只是排除了dir下的所有內容。使用dir/*,Git會處理dir的直接內容,給其他模式一個「解除」某些內容(!dir/sub /)的機會。