A. 如何在Git中忽略某些文件
1. 介紹
有些文件是我們並不想加入也無需被添加到 Git 管理中,同時也不希望他出現在未跟蹤列表中。例如在編譯過程中生成的 o 文件。 「.gitignore」 文件可以達到這個效果。
2. 全局與局部
.gitignore 有全局和局部兩種:
2.1 全局
通過修改全局配置 git config 中的 excludesfile 指定全局忽略文件。設置方法:
$git config --global core.excludesfile ~/.gitignore
修改 ~/.gitignore 這個文件將作用於所有 git 項目,並且作用於項目實例中的所有被跟蹤的目錄。比如說我們可以在該文件中添加 *.o 來忽略所有 .o 文件。
2.2 局部
忽略文件默認為當前目錄的 .gitignore ,但它只作用於當前目錄下。上面說到,在全局的 .gitignore 文件中添加 *.o 會忽略所有目錄下產生的 .o 文件,但在當前目錄下的 .gitignore 中添加 *.o 卻只能忽略當前目錄下的 .o 文件。
3. 語法
.gitignore 的語法規范如下:
·所有空行或者以注釋符號 # 開頭的行都會被 Git 忽略;
·可以使用標準的 glob 模式匹配。 * 匹配模式最後跟反斜杠(/)說明要忽略的是目錄。 * 要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。
glob 模式匹配:
·星號(*)匹配零個或多個任意字元;
·[abc] 匹配任何一個列在方括弧中的字元(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);
·問號(?)只匹配一個任意字元;
·[0-9a-zA-Z] 在方括弧中使用短劃線分隔兩個字元,表示所有在這兩個字元范圍內的都可以匹配(比如 [0-9a-zA-Z] 表示匹配所有 0 到 9 的數字和所有字母);
·\ 轉義字元。
註:理論上來說,在要忽略的格式文件後面添加註釋是允許的,但經過我的驗證,結果發現這樣子操作並不能達到預期的效果。
4. 例子
一個 .gitignore 例子。
# 此為注釋 – 將被 Git 忽略
# 忽略所有 .a 結尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件
build/
# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
B. 文件移除 git 版本庫但不刪除文件
執行以下命令
git rm -r .gitignore --cached
再次提交下
git commit -m '刪除過濾文件'
git status
過濾規則生效
git push
.gitignore忽略已加入版本控制的文件
問題:.gitignore中已經標明忽略的文件目錄下的文件,在git push的時候還會出現在push的目錄中。
原因:在git忽略目錄中,新建的文件在git中會有緩存,如果某些文件已經被納入了版本管理中搏舉,就算是在.gitignore中已經聲明了忽略路徑也是不起作用的
解決:這時候我們就應該先把本地緩存刪除,然後再進行git的push,這樣就不會出現基叢碧忽略的文件了。git清鄭喊除本地緩存命令如下:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
C. 如何創建.gitignore文件,忽略不必要提交的文件
1、進入項目的目錄下,點擊右鍵單擊【git bash】。