使用 git 做代碼管理工具時凭豪,設(shè)置 gitignore 是必不可少的流程,一些系統(tǒng)或者 IDE 會在目錄下生成與項目不相關(guān)的文件何荚,而這些文件我們不期望被提交到倉庫之中毯盈。理解 gitignore 的 pattern 規(guī)則十分重要。
Pattern 規(guī)則
關(guān)于 Pattern 規(guī)則宝剖,可以查看 git 的相關(guān)文檔:http://git-scm.com/docs/gitignore洁闰,大致有以下幾點:
- 空行不匹配任何內(nèi)容,所以可以作為塊分隔符万细;
- # 開頭表示注釋扑眉,如果相匹配 #,可以在前面加一個反斜杠赖钞,即 #腰素;
- 除非加了反斜杠,否則一連串的空格會被忽略雪营;
- 如果在匹配的內(nèi)容前面加上 !弓千,則這些匹配過的部分將被移出,如果要匹配以 ! 開頭的內(nèi)容献起,需要加上反斜杠洋访,如 !important.txt;
- 如果一個匹配 pattern 后面有一個斜杠谴餐,如 foo/姻政,則默認(rèn)會匹配所有(包含父子文件夾)中的 foo 文件夾內(nèi)容,并且它不會匹配單個的文件岂嗓;
- 如果一個匹配 pattern 不包含斜杠汁展,如 foo,Git 會將其作為一個 shell 的查找命令匹配內(nèi)容厌殉。
需要注意的 **
:
- 如果一個 pattern 以
**
開頭食绿,如**/foo
,最后會匹配所有文件夾下的foo
文件(夾)公罕; - 如果一個 pattern 以
/**
開頭器紧,如abc/**
,則表示匹配 abc 目錄下的所有內(nèi)容熏兄; - 如果一個 pattern 中間包含
**
品洛,如a/**/b
树姨,則會匹配a/b
焚挠、a/x/b
傻寂、a/x/y/b
以及所有類似的內(nèi)容。
gitignore 相關(guān)的問題
匹配示例
1屋谭、如果我們要匹配 ‘foo’ 目錄下除去 ‘foo/bar/‘ 的內(nèi)容辅斟,可以這樣做:
foo/
!foo/bar/
2转晰、如果要匹配所有目錄下的 node_modules 文件夾,只需要這樣做:
node_modules/
3士飒、如果要匹配所有的 json 文件查邢,可以這樣做:
*.json
git 操作中,add 之后再加入 gitignore
Git 操作中經(jīng)常會出現(xiàn)這樣的問題酵幕,當(dāng)我們 git add 之后扰藕,突然想起來要添加一個 gitignore 文件,但是一些諸如 node_modules/, cache/ 等文件已經(jīng)被 add 進(jìn)去了芳撒,這些文件不會被 ignore 掉邓深,怎么辦?
最直接的方式是:
- # 這一步的操作相當(dāng)于回到 git add 上一步
git rm -r --cached .
- # 然后重新 add
git add --all .
git 添加空文件夾
Git 默認(rèn)是不添加空文件夾的笔刹,如果一定要加入這個文件夾芥备,有以下方案:
1)在文件夾添加文件,然后刪除
2)在文件夾中添加一個 .gitkeep 文件
轉(zhuǎn)載自: