.gitignore文件的使用说明

学习参考文章:https://www.cnblogs.com/kevingrace/p/5690241.html

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的状态,空表示没有变换。

            .gitignore文件的使用说明