2014-12-04 109 views
1

鑑於我的回購中存在以下冗長的文件夾結構,並且想象所有這些文件夾都有一個子文件夾和子子文件夾,子子文件夾等,以及等等(只顯示前兩個層次):在這種特殊情況下編寫.gitignore的最佳做法

jim_folder > 
     name.txt 
     sub_jim_folder > 
        sub_name.txt 
        sub_sub_jim_folder > 
          sub_sub_name.txt 
          ..... 

tim_folder > 
     name.txt 
     sub_tim_folder > 
        sub_name.txt 
        sub_sub_tim_folder > 
         sub_sub_name.txt 
         ...... 

amy_folder > 
     name.txt 
     sub_amy_folder > 
        sub_name.txt 
        sub_sub_amy_folder > 
         sub_sub_name.txt 
         ....... 
jerry_folder > 
     name.txt 
     ........ 

基本上,我只想

  • 跟蹤jim_folder及其所有子目錄,文件中 子目錄和所有的子目錄和所有文件 之內它,等等。
  • 並且未找到其他目錄及其子目錄及其下的每個單獨文件或目錄,即未查詢amy_folder,jerry_folder, tim_folder及其中的每個單個文件或目錄。

問:

從我的理解,也有在這種情況下寫.gitignore 2點的方法:

  1. 忽略回購一切,除了jim_folder及其所有子目錄和所有它的子子目錄等等。
  2. 明確忽略amy_folder,jerry_foldertim_folder列出它們。

我想看到的解決辦法(代碼)這兩種方法

,因爲從邏輯上講,第一種方法應採用,但似乎我將有很多線路來寫,如果jim_folder包含許多sub,sub-sub,sub-sub-sub,.....目錄。

另一方面,我不知道如何在第二種方法中編寫.gitignore文件,我是否也需要指定那些我想在.gitignore中忽略的文件夾的整個結構?因爲那意味着很多和很多線條。

我相信這個問題有一個最佳實踐。我想聽到他們。

+0

你想跟蹤下'jim_folder'的'name.txt'文件,也? – mipadi 2014-12-04 01:04:22

+0

是的。我想跟蹤'jim_folder'中的所有內容,並且在'amy_folder','jerry_folder'和'tim_folder'中查找所有內容。一切意味着所有的文件,子目錄,子目錄,子子目錄...... – mynameisJEFF 2014-12-04 01:25:42

回答

2

對於#1:

* 
!.gitignore 
!jim_folder 
!jim_folder/**/* 

對於#2:

amy_folder 
tim_folder 
jerry_folder 

jim_folder/**/*在jim_folder的任何子目錄的任何文件相匹配。顯然,您還需要爲jim_folder創建一個例外。這讓我感到驚訝,但它是有道理的,因爲jim_folder本身不是jim_folder或其子目錄中的東西,所以它不匹配jim_folder/**/*

編輯:它depends on git version - 讓我知道這是否適合你。

+0

這裏的**是什麼意思?我正在使用'git version 2.1.3'。在實現你的解決方案#1後,我只在未跟蹤的文件中看到'jim_folder /',但是像'jim_folder/sub_jim_folder/sub_name.txt'和'jim_folder/sub_jim_folder/sub_sub_jim_folder/sub_sub_name.txt'這樣的東西仍然沒有出現。 – mynameisJEFF 2014-12-04 02:14:03

+0

嘗試輸入'git add jim_folder' - 通常git不會列出未在'git status'中追蹤的目錄的內容。對我來說,當我添加'jim_folder'時,我也會得到它的內容。 – fzzfzzfzz 2014-12-04 02:32:07

1

你可以用這個.gitignore模式做到這一點:

/* 
!/.gitignore 
!/jerry_folder 
相關問題