git pull忽略指定文件_Git忽略提交规则
在使用Git的過程中,我們喜歡有的文件比如日志,臨時文件,編譯的中間文件等不要提交到代碼倉庫,這時就要設置相應的忽略規則,來忽略這些文件的提交。
簡單來說一個場景:在你使用git add .的時候,遇到了把你不想提交的文件也添加到了緩存中去的情況,比如項目的本地配置信息,如果你上傳到Git中去其他人pull下來的時候就會和他本地的配置有沖突,所以這樣的個性化配置文件我們一般不把它推送到git服務器中,但是又為了偷懶每次添加緩存的時候都想用git add .而不是手動一個一個文件添加,該怎么辦呢?
很簡單,git為我們提供了一個.gitignore文件只要在這個文件中申明那些文件你不希望添加到git中去,這樣當你使用git add .的時候這些文件就會被自動忽略掉。有三種方法可以實現忽略Git中不想提交的文件:
1 在Git項目中定義.gitignore文件
對于經常使用Git的朋友來說,.gitignore配置一定不會陌生。這種方式通過在項目的某個文件夾下定義.gitignore文件,在該文件中定義相應的忽略規則,來管理當前文件夾下的文件的Git提交行為。.gitignore 文件是可以提交到公有倉庫中,這就為該項目下的所有開發者都共享一套定義好的忽略規則。在.gitingore 文件中,遵循相應的語法,在每一行指定一個忽略規則。如:
*.log*.temp/vendor2 在Git項目的設置中指定排除文件
這種方式只是臨時指定該項目的行為,需要編輯當前項目下的 .git/info/exclude文件,然后將需要忽略提交的文件寫入其中。需要注意的是,這種方式指定的忽略文件的根目錄是項目根目錄。
3 定義Git全局的 .gitignore 文件
git config --global core.excludesfile ~/.gitignore首先要強調一點,這個文件的完整文件名就是".gitignore",注意最前面有個“.”。一般來說每個Git項目中都需要一個“.gitignore”文件,這個文件的作用就是告訴Git哪些文件不需要添加到版本管理中。實際項目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密碼的配置文件等等。這個文件的內容是一些規則,Git會根據這些規則來判斷是否將文件添加到版本控制中。Git忽略文件的原則:* 忽略操作系統自動生成的文件,比如縮略圖等;* 忽略編譯生成的中間文件、可執行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產生的.class文件;* 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件。4 .gitignore文件的使用方法
首先,在你的工作區新建一個名稱為.gitignore的文件。 然后,把要忽略的文件名填進去,Git就會自動忽略這些文件。 不需要從頭寫.gitignore文件,GitHub已經為我們準備了各種配置文件,只需要組合一下就可以使用了。有時對于git項目下的某些文件,我們不需要納入版本控制,比如日志文件或者IDE的配置文件,此時可以在項目的根目錄下建立一個隱藏文件 .gitignore(linux下以.開頭的文件都是隱藏文件),然后在.gitignore中寫入需要忽略的文件。[root@kevin ~]# cat .gitignore *.xml *.log *.apk.gitignore注釋用'#', *表示匹配0個或多個任意字符,所以上面的模式就是要忽略所有的xml文件,log文件和apk文件。 .gitignore配置文件用于配置不需要加入版本管理的文件,配置好該文件可以為版本管理帶來很大的便利。5 .gitignore忽略規則的優先級
在 .gitingore 文件中,每一行指定一個忽略規則,Git檢查忽略規則的時候有多個來源,它的優先級如下(由高到低): 1)從命令行中讀取可用的忽略規則 2)當前目錄定義的規則 3)父級目錄定義的規則,依次遞推 4)$GIT_DIR/info/exclude 文件中定義的規則 5)core.excludesfile中定義的全局規則6 .gitignore忽略規則的匹配語法
在 .gitignore 文件中,每一行的忽略規則的語法如下: 1)空格不匹配任意文件,可作為分隔符,可用反斜杠轉義 2)以“#”開頭的行都會被 Git 忽略。即#開頭的文件標識注釋,可以使用反斜杠進行轉義。 3)可以使用標準的glob模式匹配。所謂的glob模式是指shell所使用的簡化了的正則表達式。 4)以斜杠"/"開頭表示目錄;"/"結束的模式只匹配文件夾以及在該文件夾路徑下的內容,但是不匹配該文件;"/"開始的模式匹配項目跟目錄;如果一個模式不包含斜杠,則它匹配相對于當前 .gitignore 文件路徑的內容,如果該模式不在 .gitignore 文件中,則相對于項目根目錄。 5)以星號"*"通配多個字符,即匹配多個任意字符;使用兩個星號"**" 表示匹配任意中間目錄,比如`a/**/z`可以匹配 a/z, a/b/z 或 a/b/c/z等。 6)以問號"?"通配單個字符,即匹配一個任意字符; 7)以方括號"[]"包含單個字符的匹配列表,即匹配任何一個列在方括號中的字符。比如[abc]表示要么匹配一個a,要么匹配一個b,要么匹配一個c;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內的都可以匹配。比如[0-9]表示匹配所有0到9的數字,[a-z]表示匹配任意的小寫字母)。 8)以嘆號"!"表示不忽略(跟蹤)匹配到的文件或目錄,即要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。需要特別注意的是:如果文件的父目錄已經被前面的規則排除掉了,那么對這個文件用"!"規則是不起作用的。也就是說"!"開頭的模式表示否定,該文件將會再次被包含,如果排除了該文件的父級目錄,則使用"!"也不會再次被包含。可以使用反斜杠進行轉義。需要謹記:git對于.ignore配置文件是按行從上到下進行規則匹配的,意味著如果前面的規則匹配的范圍更大,則后面的規則將不會生效;7 .gitignore忽略規則簡單說明
#表示此為注釋,將被Git忽略 # #表示忽略所有 .a 結尾的文件 *.a #表示但lib.a除外 !lib.a #表示僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO /TODO #表示忽略 build/目錄下的所有文件,過濾整個build文件夾; build/ #表示會忽略doc/notes.txt但不包括 doc/server/arch.txt doc/*.txt #表示忽略當前路徑下的bin文件夾,該文件夾下的所有內容都會被忽略,不忽略 bin 文件 bin/: #表示忽略根目錄下的bin文件 /bin: #表示忽略cat.c,不忽略 build/cat.c /*.c: #表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj debug/*.obj: #表示忽略/foo,a/foo,a/b/foo等 **/foo: #表示忽略a/b, a/x/b,a/x/y/b等 a/**/b: #表示不忽略bin目錄下的run.sh文件 !/bin/run.sh #表示忽略所有 .log 文件 *.log: #表示忽略當前路徑的 config.php 文件 config.php: #表示過濾整個文件夾 /mtk/ #表示過濾所有.zip文件 *.zip #表示過濾某個具體文件 /mtk/do.c#被過濾掉的文件就不會出現在git倉庫中(gitlab或github)了,當然本地庫中還有,只是push的時候不會上傳。 #需要注意的是,gitignore還可以指定要將哪些文件添加到版本管理中,如下: !*.zip !/mtk/one.txt#唯一的區別就是規則開頭多了一個感嘆號,Git會將滿足這類規則的文件添加到版本管理中。為什么要有兩種規則呢? #想象一個場景:假如我們只需要管理/mtk/目錄中的one.txt文件,這個目錄中的其他文件都不需要管理,那么.gitignore規則應寫為: /mtk/* !/mtk/one.txt#假設我們只有過濾規則,而沒有添加規則,那么我們就需要把/mtk/目錄下除了one.txt以外的所有文件都寫出來! #注意上面的/mtk/*不能寫為/mtk/,否則父目錄被前面的規則排除掉了,one.txt文件雖然加了!過濾規則,也不會生效!---------------------------------------------------------------------------------- #還有一些規則如下: fd1/* #說明:忽略目錄 fd1 下的全部內容;注意,不管是根目錄下的 /fd1/ 目錄,還是某個子目錄 /child/fd1/ 目錄,都會被忽略;/fd1/* #說明:忽略根目錄下的 /fd1/ 目錄的全部內容;/* !.gitignore !/fw/ /fw/* !/fw/bin/ !/fw/sf/ #說明:忽略全部內容,但是不忽略 .gitignore 文件、根目錄下的 /fw/bin/ 和 /fw/sf/ 目錄;注意要先對bin/的父目錄使用!規則,使其不被排除。溫馨提示:如果你不慎在創建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規則,這些規則也不會起作用,Git仍然會對所有文件進行版本管理。簡單來說出現這種問題的原因就是Git已經開始管理這些文件了,所以你無法再通過過濾規則過濾它們。所以大家一定要養成在項目開始就創建.gitignore文件的習慣,否則一單push,處理起來會非常麻煩。
以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要戳這里PHP進階架構師>>>實戰視頻、大廠面試文檔免費獲取
總結
以上是生活随笔為你收集整理的git pull忽略指定文件_Git忽略提交规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水泵怎么做_泳池设备日常怎么维护和保养?
- 下一篇: 平时的拼音 平时的拼音是什么