gitignore 規則
gitignore
規則一種被
Git
忽略跟蹤文件(或目錄)的規則,這種規則對於已被跟蹤的文件是無效的。
當然它也提供配置自動加入跟蹤的文件(或目錄)的規則,但這種用法比較少。
規則
基本規則
- 空行或者以
#
開頭的行都會被 Git 忽略。一般空行用於可讀性的分隔,#
一般作註釋用 - 以斜槓
/
結尾表示忽略目錄 - 以
/
開頭表示根目錄下的文件或目錄 - 以歎號
!
表示不忽略(跟蹤)匹配到的文件或目錄
示例如下:
# 本行爲註釋
.idea/ # 忽略倉庫中所有.idea 目錄
/.idea/ # 忽略倉庫中根目錄下的.idea 目錄
/.settings # 忽略倉庫中根目錄下的 .settings 文件或目錄
~'$'*.docx # office 打開時生成的臨時文件
!etc/eclipse/.checkstyle # 不忽略 .checkstyle 文件或目錄
glob 模式規則
指 shell 使用的簡化版正則表達式規則,其如下:
- 以星號
*
通配任意個字符(0-n) - 以問號
?
通配單個字符(1) - 以方括號
[]
包含單個字符的匹配列表
示例如下:
debug?.logt # 忽略 debug?.log 文件或目錄,其中 ? 爲任意一個字符
debug[0-9].log # 忽略 debug0.log、debug2.log 等,但不忽略 debuga.log 文件
debug[01].log # 僅忽略 debug0.log、debug1.log
debug[!01].log # 不忽略 debug0.log、debug1.log
doc/*.txt # 忽略 doc 目錄下一級的所有以 .txt 結尾的文件或目錄
doc/**/*.pdf # 忽略 doc 目錄下所有的 .pdf 文件或目錄
注意
- 以上規則僅適用於未被緩存或加入版本控制的文件
-
gitignore
支持 glob 模式 -
gitignore
是從上到下一行一行匹配,後面的會覆蓋前面的
用法
git 中提供 ignore 支持的方式據我瞭解共有三種,按照效果來分可分爲 全局忽略_、_倉庫忽略(遠程共用) 及 _倉庫忽略(本地使用)_。
全局忽略
本地所有倉庫中共同使用的忽略規則。
可以通過命令行或直接修改文件的方式進行修改:
- 命令行:直接修改
core.excludesFile
值即可 -
修改配置文件:修改
~/.gitconfig
文件,在[core]
區域添加 excludesfile 屬性,如下:[core] excludesFile = ~/.gitignore
注:
-
core.excludesFile
的默認值爲~/.config/git/ignore
。
倉庫忽略-遠程
當前倉庫使用,在當前倉庫任意目錄下創建 .gitignore
文件即可,Git 會通過它提供的規則忽略文件。
注:
- 遠程共用的效果需要將
.gitignore
文件加入 Git 的版本管理 -
.gitignore
文件規則存在衝突時,當前目錄中的優先於父級目錄中的
倉庫忽略-本地
當前倉庫使用。
修改 $GIT_DIR/info/exclude
文件,該文件規則和 .gitignore
文件一致。
注:
-
$GIT_DIR
爲當前倉庫中的.git/
目錄
命令行式忽略
通過命令行提供忽略規則,根據參數不同,可達到 遠程/本地 的效果。
各位如果觀察過 $GIT_DIR/info/exclude
文件,可以發現該文件第一行有這麼一個命令
git ls-files --others --exclude-from=.git/info/exclude
實際上通過此命令也可以設置忽略規則文件。
總結
以下爲個人對各種忽略規則的一般準則吧,各位可以參考參看:
- 命令行形式的,通常不使用,畢竟有以下更簡單方便的方式實現。
-
.gitignore
: 當前存儲庫中有開發人員都要忽略的跟蹤文件 -
$GIT_DIR/info/exclude
:單個存儲庫個人忽略的配置文件,如個人爲了更好 debug,開啓日誌配置等 -
~/.gitconfig
中core.excludesFile
指定的文件:任意情況下用戶希望忽略的文件,如IDE配置文件目錄(當然
項目中也一般會添加此忽略規則)。
插件
因爲個人多數使用 Intellij IDEA,所以只瞭解 IDEA 下的插件,個人推薦使用 .ignore
。
因爲該插件不僅支持 gitignore ,還支持其他類型的 ignore 忽略規則語法高亮,如圖
參考地址: