2016-08-25 89 views
2

我試圖在一個git倉庫中用一些.gitkeep文件保留一個不斷增長/縮小的目錄層次結構,並且我想要有效地擁有一個排除給定目錄下的所有文件的.gitignore文件(.gitignore文件所在的位置),除了任何.gitkeep文件。保存git倉庫中的任意目錄層次結構

目前,我有(在rpm目錄.gitignore):

/* 
!.gitignore 
!.gitkeep 

這不工作,因爲我認爲,如果該.gitkeep文件在目錄中被忽略的3號線將不會生效。

我見過的例子是這樣做:

但我希望什麼來維持也不是很靜態的,所以保持這個的.gitignore文件將是繁瑣的目錄層次結構。

我從字面上想要儘可能簡單的一個.gitignore文件忽略整個目錄(遞歸),但允許.gitkeep文件存在於所述目錄下的任何地方。這可能嗎?

回答

0

這裏是我的例子目錄

. 
├── app 
│   ├── core 
│   │   └── .gitkeep 
│   ├── lang 
│   │   ├── en 
│   │   │   └── .gitkeep 
│   │   ├── .gitkeep 
│   │   ├── gr 
│   │   │   ├── deep.txt 
│   │   │   └── .gitkeep 
│   │   └── more.txt 
│   └── something.txt 
├── .gitignore 
└── .gitkeep 

我簡直想一樣簡單.gitignore文件有可能是忽略了整個目錄(遞歸)

.gitignore

簡單地不顧一切
* 

,但允許.gitkeep文件存在於所述目錄下的任何地方。這可能嗎?

沒問題,只是迫使其添加

git add -f app/lang/en/.gitkeep 

或將其添加一次全部

find . | grep .gitkeep | xargs git add -f 

讓我們來看看

git status --ignored 
On branch master 

Initial commit 

Changes to be committed: 
    new file: .gitkeep 
    new file: app/core/.gitkeep 
    new file: app/lang/.gitkeep 
    new file: app/lang/en/.gitkeep 
    new file: app/lang/gr/.gitkeep 

Ignored files: 
    .gitignore 
    app/lang/gr/deep.txt 
    app/lang/more.txt 
    app/something.txt 
+0

感謝您的回覆。我可以稍作改動:我不希望在'git add'上使用'-f'標誌。如果我執行'touch dir/anotherdir/.gitkeep',我想將它視爲未跟蹤的文件,但如果我執行'touch dir/anotherdir/file',我希望看到git狀態沒有變化。 – jshort