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

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

首先我们重现一下这个问题:

问题重现

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

    image.png

  • 执行 git status 查看当前仓库的状态


    image.png
  • 然后我们将A.txt加入到 .gitignore中, 再执行git status查看当前仓库状态, 可以看出A.txt已经被忽略掉了


    image.png
  • 然后我们再提交我们到代码到本地的版本库中, 也就是我们本地的git仓库, 如下图:

    • git add . 是将文件添加到暂存区(暂存区的文件才能被提交到git仓库中)
    • git commit -m "注释" 是提交文件到本地版本库中
    • 执行git log命令查看提交日志, 可以看出我们已经进行了一次提交


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


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


    image.png

有种上当的感觉有木有!!!!! 我加到.gitignore中了怎么没有生效啊!!!!!!!!!!


原因

  • A B C三个文件是新增的文件, 在没有提交到git仓库之前, 加入到.gitignore中是有效的, 因为git还没有对我们的文件进行追踪, 所以A.txt被忽略掉了
  • 然后我们提交了一次, 此时B文件已经被纳入到git的版本控制之中了, 我们再对它进行忽略就不起作用了

解决

  • 此时我们需要执行 git rm --cached B.txt 将B文件从版本库中移除, 然后将B.txt加入到.gitignore中,
    (如果已经加了就不需要重复加了), 然后提交就可以了
    这样B.txt还是在本地文件夹里, 但是git已经不再对它进行追踪了

  • 我们再对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 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,963评论 0 11
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,958评论 5 147
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,737评论 9 163
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,604评论 0 13
  • 我为甜食狂,该怎么戒? 怀孕以后,发现很多事情都变得很阶段性。比如吃东西,最开始是喜欢吃酸的,后来喜欢吃凉的,再后...
    我是白小姐阅读 219评论 0 0