一 .gitignore 的作用
如果你不想讓本地倉(cāng)庫的所有文件都上傳到遠(yuǎn)程倉(cāng)庫中,而是有選擇的上傳一部分的文件,比如說依賴文件,測(cè)試文件你不想提交,
可以通過 ".git目錄 " 下的 .gitignore 文件,選擇忽略這些文件。
二 .gitignore使用規(guī)則
2.1 在工作區(qū)創(chuàng)建 .gitignore
工作區(qū):包含 .git目錄的上一級(jí)目錄,詳見:GIt系列(一)中的工作區(qū)(Working Directory)
LiYapeng@Lenovo MINGW64 /d/Local_Warehouse (master)
$ touch .gitignore # 創(chuàng)建.gitignore文件,要在工作區(qū)創(chuàng)建,和 .git目錄位于同一級(jí)目錄下,在其它位置可能沒用
LiYapeng@Lenovo MINGW64 /d/Local_Warehouse (master)
LiYapeng@Lenovo MINGW64 /d/Local_Warehouse (master)
$ ls -al
-rw-r--r-- 1 LiYapeng 197121 0 Apr 25 19:53 .gitignore
drwxr-xr-x 1 LiYapeng 197121 0 Apr 25 14:00.git/ # 用了ls-al 出現(xiàn) .git/,這是工作區(qū),要在該路徑下創(chuàng)建 .gitignore,其它位置可能沒用
2.2 .gitignore的語法
#:注釋符,開頭的行表示注釋行
*:通配符,用來匹配零個(gè)或多個(gè)字符
?:用來匹配單個(gè)字符
** :匹配多級(jí)目錄,可在開始,中間,結(jié)束
*.a表示忽略.a文件,工作區(qū)內(nèi)都忽略,不管在工作區(qū)內(nèi)的路徑在哪里
[]:用來匹配括號(hào)內(nèi)的任一字符,如[abc]
[0-9]:在[]中匹配0至9的數(shù)
[ ^ ] : 表示否定, [ ^0-4 ] .c 忽略除了 0 至 4之外的 .c 文件 , 忽略 3.c,不忽略 5.c
!:用來否定忽略,前面用了 *.c , !1.c , 否定忽略對(duì)1.c的忽略
/ 文件名:/a 如/a表示忽略根目錄下的a文件,但不忽略子目錄里的b/a文件 和 c/d/a文件
文件名 /:b/表示忽略b文件夾里的所有文件
**/abc: 表示忽略 /abc,a/abc,a/b/abc 等
a/**/b: 表示忽略a/b, a/123/b, a/fgh/dfghdfg/b等
.gitignore只能忽略那些未追蹤的文件,如果某些文件已經(jīng)被追蹤中,即如果之前已經(jīng)添加(add)到暫存區(qū),則修改.gitignore是無效的。
解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:
git add 1.txt # 1.txt 已經(jīng)添加(add)到暫存區(qū)
vim .gitignore # 在 .gitignore中編輯內(nèi)容,添加 *.txt
touch 2.txt # 創(chuàng)建 2.txt
git add . # 無法添加 2.txt 到暫存區(qū)
git commit -m "abcd" # 1.txt 被提交,2.txt不被提交到版本庫
git push origin # 1.txt 被推送到遠(yuǎn)程倉(cāng)庫,2.txt不被推送到遠(yuǎn)程倉(cāng)庫
本地緩存刪除(改變成未track狀態(tài)),然后再提交
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
2.3 進(jìn)入 .gitignore 編輯內(nèi)容
$ vim .gitignore # 用 vim 進(jìn)入 .gitignore 編輯內(nèi)容
Windows環(huán)境下,選中打開方式,點(diǎn)擊鼠標(biāo)右鍵,選中記事本,點(diǎn)擊鼠標(biāo)左鍵,進(jìn)入 .gitignore 編輯內(nèi)容文章來源:http://www.zghlxwxcb.cn/news/detail-611507.html
2.4 .gitignore 的使用案例
.bin #表示忽略所有 .bin 結(jié)尾的文件或目錄
?1.bin #表示忽略所有的(某一個(gè)字符)1.bin的文件或目錄,忽略 a1.bin,11.bin,x1.bin ,不忽略aa1.bin,111.bin,xx1.bin
[1-9].c #表示忽略 1至9.c, 不忽略1.cpp , 99.c
[1-9].c #表示忽略 1至9.(任何).c, 忽略1.ac , 9.c, 6.ac, 不忽略 100.ac , 1.cpp
.[oa] #表示忽略 file.o,file.a ,不忽略 file.cpp
!a.bin #表示但a.bin除外
/a #表示僅僅忽略項(xiàng)目根目錄下(和.git 位于 同一級(jí)目錄下 )的 a 文件或目錄,不包括 child/a
b/ #表示忽略 b/目錄下的所有文件,忽略整個(gè)b文件夾
c/.txt #表示會(huì)忽略c/a.txt但不包括 c/d/e.txt
d/ #表示,忽略當(dāng)前路徑下的d文件夾(目錄),該文件夾下的所有內(nèi)容都會(huì)被忽略,不忽略d 文件(非目錄)
/bin #表示忽略項(xiàng)目根目錄下的bin文件
fd/ #表示忽略目錄 fd下的全部?jī)?nèi)容,項(xiàng)目根目錄下的 /fd1/ 目錄 和 子目錄 /child/fd/ 目錄,都會(huì)被忽略
/fd1/ #表示忽略項(xiàng)目根目錄下的 /fd1/ 目錄的全部?jī)?nèi)容,不忽略/fd1, /a/fd1, /b/e/fd1/v
/a/b/* #表示忽略項(xiàng)目根目錄下的 /a/b/ 目錄的全部?jī)?nèi)容,不忽略/a/c, /x/a/b
/.c #表示忽略1.c,不忽略 child/2.c
e/.cpp #表示忽略e/123.cpp,不忽略 a/b/234.cpp和1/2/4.cpp
/f #表示忽略/f,a/f,a/b/f等
a//b #表示忽略a/b, a/asdf/b, a/q/w/b等
!/k/m.sh #表示不忽略k目錄下的m.sh文件
*.txt #表示忽略所有 .txt 文件或目錄
m.out #表示忽略當(dāng)前項(xiàng)目根目錄里面的 m.out文件和目錄
2.5設(shè)置全局生效
首先創(chuàng)建文件,然后設(shè)置全局生效文章來源地址http://www.zghlxwxcb.cn/news/detail-611507.html
touch ~/.gitignore_global # 創(chuàng)建.gitignore_global
vim ~/.gitignore_global # 設(shè)置忽略規(guī)則,vim 怎么用這里不講 ,csdn上有搜索即可
# 也可用記事本代替 vim 設(shè)置忽略規(guī)則 .gitignore_global ,打開記事本的方法 在2.1進(jìn)入 .gitignore 編輯內(nèi)容中有
git config --global core.excludesfile ~/.gitignore_global #設(shè)置所有的本地倉(cāng)庫生效
到了這里,關(guān)于GIt系列(二)忽略文件(.gitignore)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!