Git忽略文件(ignore file)
轉自:http://blog.csdn.net/benkaoya/article/details/7932370
1、 環境
Windows XP SP3 + TortoiseGit + msysGit
2、 ignore files的三種方法
以下涉及的ignore文件均爲如下格式:
# 以'#'開始的行,被視爲註釋. # 忽略掉所有文件名是 foo.txt的文件. foo.txt # 忽略所有生成的 html文件, *.html # foo.html是手工維護的,所以例外. !foo.html # 忽略所有.o和 .a文件. *.[oa] |
【方式一】
在倉庫目錄下新建一個名爲.gitignore的文件(因爲是點開頭,沒有文件名,沒辦法直接在windows目錄下直接創建,必須通過右鍵Git Bash,按照linux的方式來新建.gitignore文件)。如下圖所示。
.gitignore文件對其所在的目錄及所在目錄的全部子目錄均有效。通過將.gitignore文件添加到倉庫,其他開發者更新該文件到本地倉庫,以共享同一套忽略規則。
【方式二】
通過配置.git/info/exclude文件來忽略文件。這種方式對倉庫全局有效,只能對自己本地倉庫有作用,其他人沒辦法通過這種方式來共享忽略規則,除非他人也修改其本地倉庫的該文件。
【方式三】
通過.git/config配置文件的core. Excludesfile選項,指定一個忽略規則文件(完整路徑),如下圖所示。忽略規則在文件e:/gitignore.txt中(當然該文件名可以任意取)。
該方式的作用域是也全局的。
【例子】
# 忽略*.o和*.a文件
*.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
# 忽略dbg文件和dbg目錄
dbg
# 只忽略dbg目錄,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目錄
dbg
!dbg/
# 只忽略當前目錄下的dbg文件和目錄,子目錄的dbg不在忽略範圍內
/dbg
Git忽略規則(.gitignore配置)不生效原因和解決
問題:
.gitignore中已經標明忽略的文件目錄下的文件,git push的時候還會出現在push的目錄中,或者用git status查看狀態,想要忽略的文件還是顯示被追蹤狀態。
原因是因爲在git忽略目錄中,新建的文件在git中會有緩存,如果某些文件已經被納入了版本管理中,就算是在.gitignore中已經聲明瞭忽略路徑也是不起作用的,
這時候我們就應該先把本地緩存刪除,然後再進行git的push,這樣就不會出現忽略的文件了。
解決:
git清除本地緩存(改變成未track狀態),然後再提交。
git rm -r --cached . git add . git commit -m 'xxx'
注意:
- .gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。
想要.gitignore起作用,必須要在這些文件不在暫存區中才可以,.gitignore文件只是忽略沒有被staged(cached)文件,
對於已經被staged文件,加入ignore文件時一定要先從staged移除,纔可以忽略。