天天看點

用對 gitignore

使用 git 做代碼管理工具時,設定 gitignore 是必不可少的流程,一些系統或者 IDE 會在目錄下生成與項目不相關的檔案,而這些檔案我們不期望被送出到倉庫之中。了解 gitignore 的 pattern 規則十分重要。我要說話

Pattern 規則

關于 Pattern 規則,可以檢視 git 的相關文檔:http://git-scm.com/docs/gitignore,大緻有以下幾點:我要說話

  1. 空行不比對任何内容,是以可以作為塊分隔符;
  2. #

     開頭表示注釋,如果相比對 

    #

    ,可以在前面加一個反斜杠,即 

    \#

  3. 除非加了反斜杠,否則一連串的空格會被忽略;
  4. 如果在比對的内容前面加上 

    !

    ,則這些比對過的部分将被移出,如果要比對以 

    !

     開頭的内容,需要加上反斜杠,如 

    \!important.txt

  5. 如果一個比對 pattern 後面有一個斜杠,如 

    foo/

    ,則預設會比對所有(包含父子檔案夾)中的 foo 檔案夾内容,并且它不會比對單個的檔案;
  6. 如果一個比對 pattern 不包含斜杠,如 

    foo

    ,Git 會将其作為一個 shell 的查找指令比對内容。

需要注意的 

**

:我要說話

  • 如果一個 pattern 以 

    **

     開頭,如 

    **/foo

    ,最後會比對所有檔案夾下的 foo 檔案(夾);
  • /**

    abc/**

    ,則表示比對 abc 目錄下的所有内容;
  • 如果一個 pattern 中間包含 

    **

    ,如 

    a/**/b

    ,則會比對 

    a/b

    a/x/b

    a/x/y/b

     以及所有類似的内容。

gitignore 相關的問題

比對示例

如果我們要比對 ‘foo’ 目錄下除去 ‘foo/bar/‘ 的内容,可以這樣做:我要說話

foo/
!foo/bar/      

如果要比對所有目錄下的 node_modules 檔案夾,隻需要這樣做:我要說話

node_modules/      

如果要比對所有的 json 檔案,可以這樣做:我要說話

*.json      

git 操作中,add 之後再加入 gitignore

Git 操作中經常會出現這樣的問題,當我們 

git add

 之後,突然想起來要添加一個 gitignore 檔案,但是一些諸如 node_modules/, cache/ 等檔案已經被 add 進去了,這些檔案不會被 ignore 掉,怎麼辦?我要說話

最直接的方式是:我要說話

# 這一步的操作相當于回到 git add 上一步
git rm -r --cached .
# 然後重新 add
git add --all .      

git 添加空檔案夾

Git 預設是不添加空檔案夾的,如果一定要加入這個檔案夾,有以下方案:我要說話

1)在檔案夾添加檔案,然後删除我要說話

2)在檔案夾中添加一個 

.gitkeep

 檔案我要說話

讓 git 不要添加 gitignore 檔案

如果在 .gitignore 檔案中添加我要說話

.gitignore      
git rm --cached .gitignore