学习参考文章:
1,GIT忽略规则(.gitignore配置)作用:忽略文件追踪
2,使用:
1)将需要忽略的文件添加到 .gitignore中。
2).gitignore的作用是其所处目录和子目录,
所以可以git mv .gitignore ..
git commit -m 'move ....'
3)可以将.gitignore添加到版本库中,也可以忽略自己
4)被忽略的文件可以通过git status -ignore a 来看到
5)被忽略的文件要想提交必须明确显示,并且添加-f,也将被git跟踪,从.gitignore自动移除
git add -f filename
6)本地设置独享的全局忽略文件
git config --global core.excludesfile path/.gitignore
3,.gitignore失效的原因(即在.gitignore添加后,仍会被追踪)
因为在git忽略目录中,新建或已存在的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算在.gitignore中已经声明了忽略路径,也是不起作用的。
4,对.gitignore配置失效的解决方法
a)git清楚本地缓存(改变成未track状态)再提交,如下:
git rm -r --coched .
git add .
git commit -m "xxxx"
git push -u origin master
说明:
1).gitignore 只忽略未被track的文件,否正将无效。2).gitignore其作用必须这些文件不在暂存区中才可以,其只忽略没有被staged(cached)文件。已经在cached的文件,必须移除
b)在每个clone下来的库中手动设置不要检查特定文件的更改情况
git update-index --assume-unchanged PATH //PATH为要忽略的文件。
5,补充说明:
a)在使用.gitignore文件后如何删除远程仓库中以前此类上传的文件而保留本地文件
场景:在使用git和github时,没有.gitignore之前,库里就存在一些不必要的文件,在添加.gitignore后,就想删除远程库中的文件,却保存本地的文件。使用方法:
不要直接使用git rm directory。这会删除本地文件。使用git rm -r cached directory 来删除,然后再commit和push。这样远程库中的文件就被删除。
b)git库所在文件夹中的文件大致有4个状态(git status 查看)
Untracked:未跟踪,表明未加入git库,不参与版本控制,通过git add状态变为Staged。
Unmodify:已加入库,未修改,与远程版本库保存一致。被修改状态变为Modified,如果使用git rm移出版本库,装一台变为Untracked。
Modified:已修改,通过git add状态变为staged。使用git checkout(从库中获取文件,覆盖当前修改)则丢弃修改,状态变为为unmodify。
Staged:暂存状态,执行git commit 这将同步到库(本地库)中,这时库中的文件和本地文件一致,文件状态变为Unmodify状态,执行git reset HEAD filename取消暂存,变为Modified。
注意:git中的untracked 和 no staged的区别:
untracked 是只新建文件,没有拉入git版本管理中,可以通过git add filename纳入。no staged 是已纳入管理文件,但是修改过,没有再次add,存储没有暂存的意思。
c)git status -s :显示简要信息和分支信息
说明: 在每行显示的状态中,第一个占位字符表示staging area 状态,空表示没有更新, 第二个占位字符表示working directory的状态,空表示没有变换。