.gitignore文件
在使用Git的過程中,我們喜歡有的文件比如日志,臨時文件,編譯的中間文件等不要提交到代碼倉庫,這時就要設(shè)置相應(yīng)的忽略規(guī)則,來忽略這些文件的提交。
規(guī)則作用示例:
- /mtk:過濾整個文件夾;
- *.zip:過濾所有.zip文件;
- /mtk/do.c:過濾某個具體文件;
- !/mtk/one.txt:追蹤(不過濾)某個具體文件。
注意:如果你創(chuàng)建.gitignore文件之前就push了某一文件,那么即使你在.gitignore文件中寫入過濾該文件的規(guī)則,該規(guī)則也不會起作用,git仍然會對該文件進行版本管理。
配置語法:
- 以斜杠“/”開頭表示目錄;
- 以星號“*”通配多個字符;
- 以問號“?”通配單個字符;
- 以方括號“[]”包含單個字符的匹配列表;
- 以嘆號“!”表示不忽略(跟蹤)匹配到的文件或目錄。
注意:git 對于 .gitignore配置文件是按行從上到下進行規(guī)則匹配的。
定義Git全局的.gitignore文件
除了可以在項目中定義**.gitignore文件外,還可以設(shè)置全局的git .gitignore文件**來管理所有Git項目的行為。這種方式在不同的項目開發(fā)者之間是不共享的,是屬于項目之上Git應(yīng)用級別的行為。
這種方式也需要創(chuàng)建相應(yīng)的.gitignore文件,可以放在C:/Users/用戶名/目錄下。然后在使用以下命令配置Git:
git config --global core.excludesfile ~/.gitignore
自用的全局 .gitingore 文件:
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
modules.xml
target/
**/.idea
**/*.iws
**/*.iml
**/*.ipr
**/modules.xml
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
**/.gitignore
### Maven ###
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
### Java ###
# Compiled class file
*.class
Git 忽略規(guī)則
詳細的忽略規(guī)則可以參考官方英文文檔。
Git忽略規(guī)則的優(yōu)先級
在.gitingore文件中,每一行指定一個忽略規(guī)則,Git檢查忽略規(guī)則的時候有多個來源,它的優(yōu)先級如下(由高到低):
- 從命令行中讀取可用的忽略規(guī)則;
- 當(dāng)前目錄定義的規(guī)則;
- 父級目錄定義的規(guī)則,依次遞推;
- $GIT_DIR/info/exclude 文件中定義的規(guī)則;
- core.excludesfile中定義的全局規(guī)則。
.gitignore文件忽略規(guī)則
- 開頭的/并不是標(biāo)識文件夾的要表明僅忽略文件夾需要在名稱后面添加 /,而不是前面。
- 要想忽略某文件夾,但其下部分文件不能忽略。則需要添加通配符*,然后在后面添加!開頭的規(guī)則,來指出不忽略的文件或文件夾。
- 只要寫了路徑,即/左右兩邊都有字符,那么就是指的“絕對路徑”(相對倉庫的,倉庫.git文件夾所在目錄為根目錄),但可以用*來指定層級,指定第幾層子目錄下的某個文件夾。
- 空格不匹配任意文件,可作為分隔符,可用反斜杠轉(zhuǎn)義。
- #開頭的模式標(biāo)識注釋,可以使用反斜杠進行轉(zhuǎn)義。
- !開頭的模式標(biāo)識否定,該文件將會再次被包含,如果排除了該文件的父級目錄,則使用 ! 也不會再次被包含。可以使用反斜杠進行轉(zhuǎn)義。
- /結(jié)束的模式只匹配文件夾以及在該文件夾路徑下的內(nèi)容,但是不匹配該文件。
-
/開始的模式匹配項目跟目錄。
如果一個模式不包含斜杠,則它匹配相對于當(dāng)前.gitignore文件路徑的內(nèi)容,如果該模式不在.gitignore文件中,則相對于項目根目錄。 - **匹配多級目錄,可在開始,中間,結(jié)束。
- ?通用匹配單個字符。
- []通用匹配單個字符列表。
常用匹配示例:
- bin/:忽略當(dāng)前路徑下的bin文件夾,該文件夾下的所有內(nèi)容都會被忽略,不忽略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:忽略當(dāng)前路徑的config.php文件。
.gitignore文件的最開頭的一些通用設(shè)置:
# 忽略掉所有文件
*
# 取消忽略所有帶有后綴名的文件
!*.*
# 取消忽略所有目錄
!*/
關(guān)于.gitignore規(guī)則不生效的問題
.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的。
解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
不忽略沒有后綴名的文件
搜索電腦里沒有后綴的文件
首先介紹一下,如何在電腦上如何觀察搜索沒有后綴的文件。直接上圖:
就是直接搜索文件類型。
不忽略無后綴名
如下:
!/**/SCSDKCoreKit
!/**/SCSDKCreativeKit
!/**/SCSDKLoginKit
就是直接不忽略所有改文件名的文件。文章來源:http://www.zghlxwxcb.cn/news/detail-510530.html
忽略某個已經(jīng)托管給git的文件,防止二次提交
這種情況適用于,每個人修改了項目的配置,但是這個是臨時的,只適用于自己本地的情況,不可提交給大家公用時,需要這么做。文章來源地址http://www.zghlxwxcb.cn/news/detail-510530.html
# 執(zhí)行命令將文件加入不提交隊列
git update-index --assume-unchanged 你的文件路徑
# 執(zhí)行命令將文件取消加入不提交隊列
git update-index --no-assume-unchanged 你的文件路徑
參考鏈接
- https://www.jianshu.com/p/74bd0ceb6182
- https://www.cnblogs.com/fdxjava/p/15246131.html
- https://blog.csdn.net/zhangyk11/article/details/124151075
- https://www.52pojie.cn/thread-994748-1-1.html
- http://www.taodudu.cc/news/show-711773.html?action=onClick
到了這里,關(guān)于Git忽略文件的幾種方法,以及.gitignore文件的忽略規(guī)則的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!