詳解gitignore的使用方法,讓你盡情使用git add .


大家好,歡迎來到周一git專題。

今天和大家聊聊gitignore的作用,其實如果你英文還可以的話,你應該已經基本上猜到它的作用了。ignore在英文當中的意思是忽視、忽略,gitignore自然就是git當中的忽視和忽略,言下之意就是忽略某些文件。所以gitignore的作用就是幫助我們在git add時將我們指定的一些文件自動排除在外,不提交到git當中。

ignore的作用

看到這里你可能很疑惑,git創造出來就是為了管理代碼和文件的,為什么還要禁止一些文件提交呢?

其實也很簡單,舉個很簡單的例子。比如當我們寫一些編譯型語言的時候,比如C、C++、Java、go。我們在運行之前往往需要編譯一下將它們編譯成可執行的二進制文件,也稱為binary文件。編譯之后的binary文件其實是比較大的,要比源碼大很多。經常一個幾十行的代碼編譯出來好幾百KB甚至1MB這都是很正常的,像是這些二進制文件我們就完全沒有必要上傳。

因為不論是誰拿到源代碼編譯一下就可以獲得一樣的結果,完全沒有上傳可執行文件的必要。相反它還會在git倉庫當中占據大量的空間,以后不論項目經過多少次迭代,它都會一直停留在git倉庫當中,占據磁盤資源。

像是這樣沒有必要上傳的文件還有很多,比如Java編譯出來的class文件,一些中間結果、配置文件等等。我們往往圖方便都是會喜歡在使用git add提交文件的時候使用git add .也就是提交全部的命令來提交。但是如果我們目錄下有這些我們不希望提交的內容的話,也一樣會全部提交上去,所以我們希望可以在一個地方進行設置,這樣當我們使用git add .的時候可以避開一些我們不希望提交上的文件。

這個用來設置的地方就是gitignore文件。

使用方法

gitignore的使用方法非常簡單,我們在git目錄下創建一個.gitignore文件,然后在這個文件當中列舉出我們不希望提交的文件即可。

凡是列在這個文件當中的名稱,當我們在使用git add的時候都會替我們忽略掉。我們也沒有必要從頭開始編寫這個gitignore文件,因為git當中已經替我們寫好了很多模板,我們可以直接拿過來參考。

模板的地址:https://github.com/github/gitignore

我們打開之后會看到各種ignore文件,這些都是為各個語言定制的gitignore文件。

我們隨便打開一個看看。比如打開一個golang的:

從注釋上我們可以看出來,主要都是一些編譯之后的結果

設置ignore

gitignore文件的語法簡單說起來可以歸結為5條,這5條都挺簡單的,我們一條一條來說。

#表示注釋

這一條很簡單,沒什么好說的,#開頭的行會被git忽略,因為它表示注釋。這個注釋方法和Python以及shell腳本是一樣的,寫過的同學應該都不陌生。

忽略整個文件夾

如果我們想要忽略某個路徑下文件夾內的所有內容,那么我們可以寫出文件夾的路徑再加上斜杠作為結尾即可。

舉個例子,假如說我們希望過濾掉src/build文件夾下的所有內容,我們可以這么寫:

src/build/

那么這個路徑下的所有內容都會被忽略,這個路徑是相對路徑。

!表示取反

前面說了,我們可以寫出一個文件夾的路徑來忽略掉這個文件夾下的所有文件,那么假如說這個文件夾當中有一個文件是我們希望提交的,那應該怎么辦呢?

我們可以用!命令來取反,表示我們指定的可以不遵守忽略條件的文件名。

比如說我們想要保留src/build路徑下叫做main.go的文件,那么我們可以加上一行:

!main.go

glob模式匹配

我們都知道正則表達式非常復雜,正則表達式入門這一本書足足有好幾百頁這么厚。但是實際上我們一般情況往下用不到這么復雜的模式匹配,所以我們在shell命令當中常用的簡化了的模式匹配規則,它比正則表達式要簡單很多。

比如*可以代表一切的字符串,可以是0個也可以是任意多個字符。[abc]表示匹配方括號當中的任何一個字符,?表示匹配任何一個字符。[0-9]表示匹配0-9當中任意一個數字,兩個*號表示任何中間目錄,比如src/**/build,可以匹配到src/test/build,也可以匹配到src/current/build。

比如你想要過濾掉所有的txt格式的文件,你可以這么寫:

*.txt

比如你想要過濾掉build路徑下的所有json文件,你可以這么寫:

build/*.json

雖然glob的模式匹配遠遠不如正則表達式那么強大,但是對於常用的文件匹配的場景來說,它已經足夠了。靈活用好這幾種規則已經足夠可以應付幾乎所有場景下的文件ignore了。

我們洋洋灑灑寫了這么多,但是其中的關鍵點只有零碎的幾個,學習成本並不高,但是學會了之后可以一勞永逸地解決很多問題,因此我個人覺得它的性價比還是很高的,非常值得一學。

最后,衷心祝願大家每天都有所收獲。如果還喜歡今天的內容的話,請來一個三連支持吧~(點贊、關注、轉發

原文鏈接,求個關注

本文使用 mdnice 排版

- END -


免責聲明!

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



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