(七)The .gitignore

1、為什么要有 .gitignore 文件?

項目中經(jīng)常會生成一些Git系統(tǒng)不需要追蹤( track )的文件。典型的是在編譯生成過程中 產(chǎn)生的文件或是編程器生成的臨時備份文件。當然,你不追蹤( track )這些文件,可以 平時不用 git add 去把它們加到索引中。 但是這樣會很快變成一件煩人的事,你發(fā)現(xiàn)項目中到處有未追蹤( untracked )的文件; 這樣也使 git add .git commit -a 變得實際上沒有用處,同時 git status 命令的輸出也會有它們。你可以在你的頂層工作目錄中添加一個叫 .gitignore 的文件,來告訴Git系統(tǒng)要忽略 掉哪些文件。


2、忽略文件原則:

  • 忽略操作系統(tǒng)自動生成的文件,比如縮略圖、 .DS_Store 等;
  • 忽略編譯生成的中間文件、可執(zhí)行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如 Java 編譯產(chǎn)生的 .class 文件;
  • 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件;
  • 或者是我們就是不想某個文件 push 上去,這個時候我們只需要在 .gitignore 中寫入一些適當?shù)囊?guī)則, 就可以實現(xiàn)上面的效果。

3、 .gitignore 語法規(guī)范:

  • 空行或是以#開頭的行即注釋行將被忽略;
  • 以斜杠 “/” 結(jié)尾表示目錄;
  • 以星號 “*” 通配多個字符;
  • 以問號 “?” 通配單個字符;
  • 以方括號 “[]” 包含單個字符的匹配列表;
  • 以嘆號 “!” 表示不忽略(跟蹤)匹配到的文件或目錄;
  • 可以在前面添加斜杠 “/” 來避免遞歸,下面的例子中可以很明白的看出來與下一條的區(qū)別。

4、示例:

# 忽略 .a 文件
*.a

# 但否定忽略 lib.a, 盡管已經(jīng)在前面忽略了 .a 文件
!lib.a

# 僅在當前目錄下忽略 TODO 文件, 但不包括子目錄下的 subdir/TODO
/TODO

# 忽略 build/ 文件夾下的所有文件
build/

# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt

# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

5、 .gitignore 文件配置模板:

GitHub 上為開發(fā)者提供了各種環(huán)境以及各種編程語言的 gitignore 文件配置模板
Objective-C.gitignore
Swift.gitignore


小結(jié):

  • 忽略某些文件時,需要編寫 .gitignore 。
  • .gitignore 文件本身要放到版本庫里,并且可以對 .gitignore 做版本管理!
  • 從版本庫中刪除:
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容