.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中任一字符
Git忽略提交规则 - .gitignore配置运维总结