忽略文件
一般我們總會有些文件無需納入 Git 的管理,也不希望它們總出現在未跟蹤文件列表。 通常都是些自動生成的文件,比如日誌文件,或者編譯過程中創建的臨時文件等。 在這種情況下,我們可以創建一個名爲 .gitignore 的文件,列出要忽略的文件模式。
創建.gitignore
文件
很多人恐怕在第一步就卡住了,比如“創建.gitignore
文件”(因爲用我們常規的鼠標右鍵的方式是無法實現的)。
請打開你的Git Bash
命令行工具,輸入以下命令:
- 創建
.gitignore
文件命令
$ touch .gitignore
注意: 用ls
命令是查看不了.
開頭的文件的,您需要用ls -a
命令來查看上一步創建的.gitignore
文件。
- 查看
.gitignore
文件
$ view .gitignore
當然,你也可以通過編輯器打開的方式來查看。
文件 .gitignore
的格式規範如下:
- 所有空行或者以
#
開頭的行都會被Git
忽略。 - 可以使用標準的
glob
模式匹配。 - 匹配模式可以以(
/
)開頭防止遞歸。 - 匹配模式可以以(
/
)結尾指定目錄。 - 要忽略指定模式以外的文件或目錄,可以在模式前加上驚歎號(
!
)取反。
glob 模式匹配規則:
*
匹配0或多個除了/
以外的字符,注意不匹配以.
開始的路徑,如文件.a
?
匹配單個除了/
以外的字符[…]
匹配一系列字符,如[abc]
匹配字符a, b, c[^…]
和[!…]
表示匹配不在列表中的字符,如[^abc]
匹配除了a, b, c以外的字符。**
匹配多個字符包括/
{a,b}
匹配a或則b,a和b也是通配符,可以由其他通配符組成!
出現在規則的開頭,表示取反。即匹配不命中後面規則的文件
.gitignore
配置案例
# “#”號表示此爲註釋,將被Git忽略
*.a # 表示忽略所有 .a 結尾的文件
!lib.a # 表示但lib.a除外
/TODO # 表示僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ # 表示忽略 build/目錄下的所有文件,過濾整個build文件夾;
doc/*.txt # 表示會忽略doc/notes.txt但不包括 doc/server/arch.txt
bin/: # 表示忽略當前路徑下的bin文件夾,該文件夾下的所有內容都會被忽略,不忽略 bin 文件
/bin: # 表示忽略根目錄下的bin文件
/*.c: # 表示忽略cat.c,不忽略 build/cat.c
debug/*.obj: # 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: # 表示忽略/foo,a/foo,a/b/foo等
a/**/b: # 表示忽略a/b, a/x/b,a/x/y/b等
!/bin/run.sh # 表示不忽略bin目錄下的run.sh文件
*.log: # 表示忽略所有 .log 文件
config.php: # 表示忽略當前路徑的 config.php 文件
事實上我們可以去“扒”一個模板
GitHub
有一個十分詳細的針對數十種項目及語言的 .gitignore
文件列表,你可以在
https://github.com/github/gitignore 找到它。