星期五, 8月 26, 2011

.gitignore

不加入版本控管可透過.gitgnore設定
在git的根目錄下建.gitgnore,其內容設定
#.gitignore內容
tmp.txt                  #不加入tmp.txt
*.log                    #不加入所有的log檔
tmp/*                    #不加入tmp下所有檔
log/**/*.log             #忽略log目錄下包含子目錄的所有.log檔案
log/**/*                 #略特定目錄下的所有檔案

由於git不會track空資料夾,所以當ignore *, 會造成tmp/log資料夾不會加入repository
這時只要在tmp/log下,加個.gitignore,內容如下
vi tmp/.gitignore # log/.gitignore
#--
*
!.gitignore #這個檔也可以不追蹤

其他過濾條件(其實就正規表達式)
  • ?:代表任意的一個字元
  • *:代表任意數目的字元
  • {!ab}:必需不合於此pattern
  • {ab,bb,cx}:代表合於ab,bb,cx之一種pattern即可
  • [abc]:代表合於a,b,c中任一字元即可
  • [^abc]:代表必需不合於a,b,c中任一字元

FAQ
  • 加入ignore無效?
    明明就已經加入了,但一樣會檢查
    因為一開始就把檔案加入tracking,就把檔案放進repository追蹤
    所以每次改變都會檢查,這時只要下
    git rm --cached <ignore file>
    然後再commit一次,這樣就ok啦
    p.s. 當然這次 gitignore就要先寫好 後記:但別人merge後,不知為何他的<ignore fil>會整個刪掉....
References git ignore

沒有留言: