2012-03-05 56 views
7

根據this thread,排除在Git的sparse-checkout feature應該被實施。是嗎?Git稀疏結賬排除

假設我有以下結構:

papers/ 
papers/... 
presentations/ 
presentations/heavy_presentation 
presentations/... 

現在我想排除結賬presentations/heavy_presentation,而留在結賬休息。我還沒有設法讓這個運行。什麼是正確的語法?

回答

4

我本來期望類似下面的工作:

/* 
!presentations/heavy_presentation 

但事實並非如此。我也嘗試了許多其他組合。我認爲,排除不正確實施,大約有它(仍然)錯誤

喜歡的東西:

presentations/* 
!presentations/heavy_presentation 

做的工作,雖然,你會得到的演示沒有heavy_presentation文件夾中。

因此,解決方法是明確包含所有其他內容。

+0

謝謝,確認。我編輯了您的帖子,添加了另一個無法使用的示例。 – krlmlr 2012-03-07 14:26:40

3

我有同樣的問題。我喜歡的東西固定它:

!presentations/heavy_presentation 
presentations/* 

我如何理解它的工作原理: 它讀取的規則文件規則。如果包含了某些內容,它將包含包含該單詞的所有路徑,並且直到稀疏結帳結束時它不再更改其狀態。如果您在包含之前添加排除規則,我認爲它會首先刪除文件,並將所有標記爲包含。

我不完全確定,這是我根據自己的經驗假定的,一直在爲我工作。我希望它能幫助別人。

3

可悲的是上面沒有爲我工作,所以我花了很長時間嘗試sparse-checkout文件的不同組合。

在我的情況下,我想用IntelliJ IDEA配置跳過文件夾。

這裏是我做過什麼:


運行git clone https://github.com/myaccount/myrepo.git --no-checkout

運行git config core.sparsecheckout true

創建.git\info\sparse-checkout與以下內容

!.idea/* 
!.idea_modules/* 
/* 

運行 'git的結帳 - ' 來獲得全部文件。


讓它工作的關鍵是在文件夾名後加/*

我有git 1.9