如何編寫gitignore文件


為什么要有.gitignore文件

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

忽略文件原則

  1. 忽略操作系統自動生成的文件,比如縮略圖等;
  2. 忽略編譯生成的中間文件、可執行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產生的.class文件;
  3. 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件。

語法規范(熟悉正則很容易理解)

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

配置文件示例

# 忽略 .a 文件
*.a

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

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

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

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

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

配置文件模板

Github 上為開發者提供了各種環境以及各種編程語言的 gitignore 文件配置模板:https://github.com/github/gitignore

本人使用的是python項目的gitgnore文件 url:https://github.com/github/gitignore/blob/master/Python.gitignore

.gitignore分為全局配置和局部配置,這個很容易理解全局配置是指修改當前.gitignore文件本機的git中的全部項目都起作用,局部的配置是指每個項目下的.gitignore文件只對向前所在的項目起作用。

局部的配置只需要在項目目錄中創建 .gitignore 文件即可。

全局的配置設置方法為:

$git config –global core.excludesfile ~/.gitignore

這樣,修改 ~/.gitignore 這個文件將作用於所有 git 項目,並且作用於項目實例中的所有被跟蹤的目錄。
# Windows: (使用windows用戶,過濾存放圖片文件夾下生成的縮略圖) Thumbs.db ehthumbs.db Desktop.ini # Python: *.py[cod] *.so *.egg *.egg-info dist build target .idea .classpath .project .settings *.iml .gitignore

總結

  1. 忽略某些文件時,需要編寫.gitignore
  2. .gitignore文件本身要放到版本庫里,並且可以對.gitignore做版本管理!
  3. 從版本庫中刪除
    $ git rm test.txt
    rm 'test.txt'
    $ git commit -m "remove test.txt"
 

參考鏈接:http://www.chengxusheji.com/archives/121.html

              http://kuanghy.github.io/2016/05/17/gitignore

              http://outofmemory.cn/code-snippet/37452/git-ignorefiles-example


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM