Git忽略文件.gitignore操作方法指南
Git忽略文件.gitignore
在工程中,并不是所有文件都需要保存到版本庫中的,例如“target”目錄及目錄下的文件就可以忽略。在Git工作區(qū)的根目錄下創(chuàng)建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件或目錄。
gitignore的基礎(chǔ)用法
# .gitignore配置文件的一些通用技巧 [參考:https://git-scm.com/docs/gitignore]
# 1.空白行不匹配任何文件,所以可以作為可讀性的分隔符,同時兩端的空格將會被忽略.
# 2.使用[#]開頭,將會注釋掉整行,使其不進行匹配操作,如果需要匹配#開頭,可以使用轉(zhuǎn)義字符[\].
# 3.1匹配模式以[/]結(jié)尾,表示想要匹配一個目錄及其子文件.(比如[foo/]會匹配foo目錄及其下面的路徑.)
# 3.2匹配模式不包含[/],將會全局匹配該文件.
# 4.通配符
# [*]: 匹配除[/]以外的任何內(nèi)容,也就意味著[*]不能跨目錄.
# [?]: 匹配除[/]和[[]以及[]]以外的任何一個字符.
# [**]: 匹配所有的內(nèi)容,或者說匹配任意目錄下的內(nèi)容.
# 示例:
# 1.[**/foo/bar] 將會匹配所有直接在foo目錄下的bar,無論foo處在何處.
# 2.[foo/**]則表示匹配foo目錄下的所有文件和目錄.
# 3.[a/**/b]則可以匹配a/b, a/c/b, a/c/d/b,即此處的[**]可以表示0個或多個.
# !!! 需要注意的是,除上面示例的用法外,剩余的[**]都是無效的..
# 5.可以通過前綴[!]來表示不忽略某些文件,比如可以通過[!a]來確保文件a不會被忽略,即時前面已經(jīng)聲明了忽略其父目錄,該模式優(yōu)先級高于普通忽略模式.
Git 三種方法忽略提交的文件
在Git項目中定義 .gitignore 文件
這種方式通過在項目的某個文件夾下定義 .gitignore 文件,在該文件中定義相應(yīng)的忽略規(guī)則,來管理當前文件夾下的文件的Git提交行為。
.gitignore 文件是可以提交到公有倉庫中,這就為該項目下的所有開發(fā)者都共享一套定義好的忽略規(guī)則。
在 .gitingore 文件中,遵循相應(yīng)的語法,在每一行指定一個忽略規(guī)則。如:
*.log *.temp /vendor2\
在Git項目的設(shè)置中指定排除文件
這種方式只是臨時指定該項目的行為,需要編輯當前項目下的 .git/info/exclude 文件,然后將需要忽略提交的文件寫入其中。
需要注意的是,這種方式指定的忽略文件的根目錄是項目根目錄。
定義Git全局的 .gitignore 文件
除了可以在項目中定義 .gitignore 文件外,還可以設(shè)置全局的 git .gitignore 文件來管理所有Git項目的行為。這種方式在不同的項目開發(fā)者之間是不共享的,是屬于項目之上Git應(yīng)用級別的行為。
這種方式也需要創(chuàng)建相應(yīng)的 .gitignore 文件,可以放在任意位置。然后在使用以下命令配置
Git: git config --global core.excludesfile \~/.gitignore
.gitignore文件中的忽略規(guī)則
在空格不匹配任意文件,可作為分隔符,可用反斜杠轉(zhuǎn)義
# 開頭:標識注釋,可以使用反斜杠進行轉(zhuǎn)義
! 開頭:標識否定,該文件將會再次被包含,如果排除了該文件的父級目錄,則使用 ! 也不會再次被包含??梢允褂梅葱备苓M行轉(zhuǎn)義
/ 結(jié)束:只匹配文件夾以及在該文件夾路徑下的內(nèi)容,但是不匹配該文件
/ 開頭:匹配文件
如果一個模式不包含斜杠,則它匹配相對于當前 .gitignore 文件路徑的內(nèi)容,如果該模式不在 .gitignore 文件中,則相對于項目根目錄
** 匹配多級目錄,可在開始,中間,結(jié)束
?
通用匹配單個字符
[]
通用匹配單個字符列表
常用匹配示例:
bin/ :忽略當前路徑下的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 : 忽略當前路徑的 config.php 文件
java忽略文件
# 編譯后的class文件,忽略所有以[.class]結(jié)尾的文件 *.class # 日志文件,忽略所有以[.log]結(jié)尾的文件. *.log # BlueJ 文件,忽略所有以[.ctxt]結(jié)尾的文件. *.ctxt # Mobile Tools for Java (J2ME),忽略[.mtj.tmp/]目錄及其子文件. .mtj.tmp/ # 打包文件,忽略所有以[.jar]或[.war]或[.nar]或[.ear]或[.zip]或[.tar.gz]或[rar]結(jié)尾的文件. *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar
IDE環(huán)境忽略文件
.idea/* .idea/compiler.xml .idea/encodings.xml .idea/modules.xml *.iml
maven忽略文件
target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties # Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) !/.mvn/wrapper/maven-wrapper.jar
other環(huán)境忽略文件
*.sw? .#* *# *~ .classpath .project .settings/ bin build target dependency-reduced-pom.xml *.sublime-* /scratch .gradle Guardfile README.html *.iml .idea
.gitignore規(guī)則不生效
.gitignore只能忽略那些原來沒有被 track 的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的。
解決方法就是先把本地緩存刪除**(改變成未track狀態(tài))**,然后再提交:
git rm -r cached . git add . git commit -m 'update .gitignore'
總結(jié)
到此這篇關(guān)于Git忽略文件.gitignore操作方法的文章就介紹到這了,更多相關(guān)Git忽略文件.gitignore內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Git?Commitizen提交規(guī)范化自動生成changelog文件
這篇文章主要為大家介紹了Git?Commitizen提交規(guī)范化自動生成changelog文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09在 WordPress 的頁眉(header)和頁腳(footer)添加代碼方法
這篇文章主要介紹了在 WordPress 的頁眉(header)和頁腳(footer)添加代碼方法2021-09-09