Git 忽略提交 .gitignore
技術標籤:git
理論上,git add .是提交所有檔案,如果感覺可能有什麼遺漏,可以使用git add * 命令來將檔案提交到本地暫存區。
但是,有一些檔案,我們不希望使用git來進行託管。
比如PHP的框架目錄下的檔案,他是不會發生改變的,因此,使用git來託管,意義不大。再就是日誌檔案,那個玩意也沒有必要託管。
一:使用命令排除檔案
通常,我們需要通過一些語法的規則來限制這些檔案的提交:
1) /mtk 過濾整個資料夾
*2) .zip 過濾所有.zip檔案
3) /mtk/do.c 過濾某個具體檔案
4) !/mtk/one.txt 追蹤(不過濾)某個具體檔案
注意:如果你建立.gitignore檔案之前就push了某一檔案,那麼即使你在.gitignore檔案中寫入過濾該檔案的規則,該規則也不會起作用,git仍然會對該檔案進行版本管理。
二:使用.gitignore檔案排除檔案
上邊提到的.gitignore 是Git為我們提供的一個檔案,完美的解決了需要用語法來過濾我們不想提交程式碼的過濾問題。
.gitignore檔案,語法規則:
1) 以斜槓“/”開頭表示目錄;
2) 以星號“*”通配多個字元;
3) 以問號“?”通配單個字元
4) 以方括號“[]”包含單個字元的匹配列表;
5) 以歎號“!”表示不忽略(跟蹤)匹配到的檔案或目錄。
注意: git 對於 .gitignore配置檔案是按行從上到下進行規則匹配的。
具體語法請參照官方文件:
https://git-scm.com/docs/gitignore
三:常用匹配示例:
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 檔案
*!.gitignore 忽略當前目錄所有檔案
四:.gitignore規則不生效
.gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。
解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
有好的建議,請在下方輸入你的評論。
歡迎訪問個人部落格
https://guanchao.site
歡迎訪問小程式: