.gitignore只能忽略沒有被跟蹤的文件(就是沒有被納入版本管理的文件),如果已經被納入版本管理是無法忽略的。
所謂納入版本管理,就是在本地有個緩存區(cached),所有在緩存區的文件都被版本管理了,每次你修改文件后,git會對比緩存區和當前的文件差異,從而決定哪些需要提交更新。
為了重新讓修改的.gitignore生效,首先在本地清除緩存,然后重新將文件納入版本管理,最后提交新.gitignore到遠端。
在項目根目錄下,指令如下:
git rm -r --cached . //清除緩存區,注意最后有個"."
git add . //重新納入版本管理,注意最后有個"."
git commit -m 'update .gitignore' //提交新的忽略文件。
如果你用的是sourceTree,最后一步更新忽略文件可以在界面操作
針對一個某個文件:
git rm --cached temp.php //表示將temp.php移除版本管理。
git add temp.php //表示將temp.php納入版本管理
可以按照以下步驟來:
第1步: 先將要忽略的文件備份。
第2步:已跟蹤文件,先退出版本管理,退出同時等於刪除文件,再提交到git上,即刪除遠程的文件,讓其變成未跟蹤文件
第3步:未跟蹤文件,直接在.gitignore文件打上文件名字,如果要忽略整個文件夾,要在文字后面加上一個/ 。
第4步:將之前備份文件拷貝回來,以后都不會提交了。
.gitignore文件忽略規則
# 忽略*.o和*.a文件
*.[oa]
# 忽略*.b和*.B文件,my.b除外 -》
*.[bB]
!my.b
# 忽略dbg文件和dbg目錄
dbg
# 只忽略dbg目錄,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目錄
dbg
!dbg/
# 只忽略當前目錄下的dbg文件和目錄,子目錄的dbg不在忽略范圍內
/dbg
# 以'#'開始的行,被視為注釋.
?:代表任意的一個字符
*:代表任意數目的字符
{!ab}:必須不是此類型
{ab,bb,cx}:代表ab,bb,cx中任一類型即可
[abc]:代表a,b,c中任一字符即可
[ ^abc]:代表必須不是a,b,c中任一字符