文章導航
在 git 中如果想忽略掉某個文件,不讓這個文件提交到版本庫中,可以使用修改根目錄中 .gitignore 文件的方法(如果沒有這個文件,則需自己手工建立此文件)。
1. java開發示例
下面這個可以直接拿來用,基本包含了常用的 IDE
/target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.settings
.springBeans
.sts4-cache
bin/
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### vscode ###
.vscode
### gradle
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
### mvn
.mvn
log/
### test ng result ###
test-output/
2. .gitignore 規則示例:
# 此爲註釋,將被 Git 忽略
*.sample # 忽略所有 .sample 結尾的文件
!lib.sample # 但 lib.sample 除外
/TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括子目錄中的 /TODO
build/ # 忽略 build/ 目錄下的所有文件
doc/*.txt # 忽略 doc/notes.txt 但不包括 doc/server/arch.txt
**/book.json # 忽略所有目錄下的 book.json 文件,包括子目錄(需要 git 1.8.2 及其以上的版本才支持)
**/book/book.json # 忽略任意層級下的 book/book.json 文件
3. 文件 .gitignore 的格式規範:
• 所有空行或者以註釋符號 # 開頭的行都會被 Git 忽略
• 可以使用標準的 glob 模式匹配
• 匹配模式最後跟反斜槓(/)說明要忽略的是目錄
• 要忽略指定模式以外的文件或目錄,可以在模式前加上驚歎號(!)取反
4. 所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式
1. * 匹配零個或多個任意字符
2. ? 只匹配一個任意字符
3. [abc] 匹配任何一個列在方括號中的字符(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c)
4. [0-9] 表示匹配 0到9 中的任意一個數字, [a-c] 匹配 a到c 中的任意一個字母
5. .gitignore 規則不生效的解決辦法
把某些目錄或文件加入忽略規則,按照上述方法定義後發現並未生效,原因是.gitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。
那麼解決方法就是先把本地緩存刪除(改變成未被追蹤狀態),然後再提交。
git rm -r --cached .
git add .
git commit -m 'update .gitignore'