解决git中将要忽略的文件加入.gitignore无效的问题

有很多人在使用git的时候可能会遇到这样一个问题: 将要忽略的文件或者文件夹加入到.gitignore文件中不生效, 也就是没有忽略掉.
首先我们重现一下这个问题:
问题重现

  • 如下图是一个git仓库, 新增(注意是新增) 四个文件, 分别为A.txt, B.txt, C.txt, .gitignore, 并且 .gitignore中没有任何忽略内容

    解决git中将要忽略的文件加入.gitignore无效的问题
    文章图片
    image.png 【解决git中将要忽略的文件加入.gitignore无效的问题】
  • 执行 git status 查看当前仓库的状态

    解决git中将要忽略的文件加入.gitignore无效的问题
    文章图片
    image.png
  • 然后我们将A.txt加入到 .gitignore中, 再执行git status查看当前仓库状态, 可以看出A.txt已经被忽略掉了

    解决git中将要忽略的文件加入.gitignore无效的问题
    文章图片
    image.png
  • 然后我们再提交我们到代码到本地的版本库中, 也就是我们本地的git仓库, 如下图:
    • git add . 是将文件添加到暂存区(暂存区的文件才能被提交到git仓库中)
    • git commit -m "注释" 是提交文件到本地版本库中
    • 执行git log命令查看提交日志, 可以看出我们已经进行了一次提交

      解决git中将要忽略的文件加入.gitignore无效的问题
      文章图片
      image.png
  • 此时, 我们发现B.txt也是需要忽略掉的文件, 可能你会这么操作, 将B.txt也加入到.gitignore中, 如下, 将B.txt也加进去了, 万事大吉, 准备回家过年了

    解决git中将要忽略的文件加入.gitignore无效的问题
    文章图片
    image.png
  • 我们修改B.txt, 比如加入一行hello world (项目中这些忽略的文件可能是ide自动生成的或者一些日志文件), 然后执行git status, 问题重现了, 没有忽略掉

    解决git中将要忽略的文件加入.gitignore无效的问题
    文章图片
    image.png
有种上当的感觉有木有!!!!! 我加到.gitignore中了怎么没有生效啊!!!!!!!!!!

解决git中将要忽略的文件加入.gitignore无效的问题
文章图片
原因
  • A B C三个文件是新增的文件, 在没有提交到git仓库之前, 加入到.gitignore中是有效的, 因为git还没有对我们的文件进行追踪, 所以A.txt被忽略掉了
  • 然后我们提交了一次, 此时B文件已经被纳入到git的版本控制之中了, 我们再对它进行忽略就不起作用了
解决
  • 此时我们需要执行 git rm --cached B.txt 将B文件从版本库中移除, 然后将B.txt加入到.gitignore中,
    (如果已经加了就不需要重复加了), 然后提交就可以了 这样B.txt还是在本地文件夹里, 但是git已经不再对它进行追踪了

    解决git中将要忽略的文件加入.gitignore无效的问题
    文章图片

  • 我们再对B.txt进行修改, 可以发现, B.txt确确实实被忽略掉了
    • 注: git st是我自己设置的 git status的别名, 可以通过执行 git config --global alias.st status设置, alias. 后面的就是你要设置的别名, status是你要设置的别名的命令, 再比如我可以将git branch 命令设置为git br, 可以执行 git config --global alias.br branch. 当然别名是什么因人而异~

      解决git中将要忽略的文件加入.gitignore无效的问题
      文章图片

    推荐阅读