1. 程式人生 > 其它 >Git 忽略提交 .gitignore

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

歡迎訪問小程式:
在這裡插入圖片描述