.gitignore檔案作用
阿新 • • 發佈:2021-12-10
目錄
一.簡介
一般來說每個Git專案中都需要一個.gitignore文
件,這個檔案的作用就是告訴Git哪些檔案不需要新增到版本管理中。
意思就是本地修改完專案後,上傳到github等版本管理服務中,本地哪些檔案不上傳過去。
實際專案中,很多檔案都是不需要版本管理的,比如Python的.pyc檔案和一些包含密碼的配置檔案等等。
這個檔案的內容是一些規則,Git會根據這些規則來判斷是否將檔案新增到版本控制中。
二.常用規則
vim .gitignore
/mtk/ #過濾整個資料夾
*.zip #過濾所有.zip檔案
/mtk/do.c #過濾某個具體檔案
很簡單吧,被過濾掉的檔案就不會出現在你的GitHub庫中了,當然本地庫中還有,只是push的時候不會上傳。
三.詳細
需要注意的是,gitignore還可以指定要將哪些檔案新增到版本管理中:
!*.zip
!/mtk/one.txt
唯一的區別就是規則開頭多了一個感嘆號,Git會將滿足這類規則的檔案新增到版本管理中。
為什麼要有兩種規則呢?想象一個場景:我們只需要管理/mtk/目錄中的one.txt檔案,這個目錄中的其他檔案都不需要管理。那麼我們就需要使用:
/mtk/
!/mtk/one.txt
假設我們只有過濾規則沒有新增規則,那麼我們就需要把/mtk/目錄下除了one.txt以外的所有檔案都寫出來!
最後需要強調的一點是,如果你不慎在建立.gitignore檔案之前就push了專案,那麼即使你在.gitignore檔案中寫入新的過濾規則,這些規則也不會起作用,Git仍然會對所有檔案進行版本管理。
簡單來說,出現這種問題的原因就是Git已經開始管理這些檔案了,所以你無法再通過過濾規則過濾它們。
所以大家一定要養成在專案開始就建立.gitignore檔案的習慣,否則一旦push,處理起來會非常麻煩。
*.a # 忽略所有 .a 結尾的檔案
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略專案根目錄下的 TODO 檔案,不包括 subdir/TODO
build/ # 忽略 build/ 目錄下的所有檔案
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
本文版權歸作者所有,歡迎轉載,請務必新增原文連結。