有些时候我们往往会忘记添加git忽略文件(.gitignore),导致服务器上存在很多不需要版本控制或者根本无需保存到服务器上的文件,如编译信息、本地编辑器信息、可执行文件等。
移除不需版本控制文件
1.只移除服务器上文件
git rm -r -n --cached "path/" #预览需删除的文件,可省略
git rm -r --cached "path/" #删除文件,path为路径
git commit -m "delete" #提交&注释
git push #提交到远程服务器
2.本地与服务器文件都移除
git rm -r -n --cached "path/" #预览需删除的文件,可省略
git rm -r "path/" #删除文件,path为路径
git commit -m "delete" #提交&注释
git push #提交到远程服务器
忽略不需版本控制文件
避免垃圾文件提交服务器,在clone本地时候增加“.gitignore”文件,这样在push服务器时候忽略这些文件。
1.语法规则
【1】空格作为分隔符,带空格文件用反斜杠“\”转义。
bulid\obj/
【2】以“#”作为注释,文件带“#”用反斜杠“\”转义。
bulid\obj/ #忽略bulid-obj目录下所有文件
【3】以“!”开头表示排除忽略该文件;如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义。
!lib.so # lib.so 除外(不忽略)
【4】以“/” 结束,表示忽略该文件夹以及该在文件夹路径下的文件。
build/ # 忽略 build/ 目录下的所有文件
【5】以“/” 开头,表示匹配项目根目录。
/build # 忽略项目根目录下build文件,
【6】如果不指定路径,则匹配相对于当前 .gitignore 文件路径的内容;如果该模式不在 .gitignore 文件中,则相对于项目根目录。
*.txt # 忽略当前路径所有 .txt结尾的文件
【6】“**” 匹配多级目录,可在开始,中间,结束。
**/build: 忽略/bulid, x/foo, x/x/foo等(上级和上两级目录)。
【7】“?” 通用匹配单个字符。
【8】"[]" 通用匹配单个字符列表。
2.步骤
1).新建“.gitignore”文件
vi .gitignore
2).添加需忽略的文件
3).配置
git config core. excludesfile .gitignore
4).推送
git push origin master
3.忽略规则未生效问题
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中(如使用“git add .”添加所有文件),则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m ‘update .gitignore’
参考