.gitignore无效解决方案

Posted 一花一世界一叶一菩提

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.gitignore无效解决方案相关的知识,希望对你有一定的参考价值。

一. gitignore

先来了解一下gitignore的常用语法

  斜杠“/”表示目录, 是否已斜杠开头有很大区别,如 /build 与 build/ 的区别:其中 build/ 表示不管在哪个位置的 build 目录都会被忽略;

  星号“*”通配多个字符;

  问号“?”通配单个字符

  方括号“[]”包含单个字符的匹配列表;

  叹号“!”表示取反,即不忽略(跟踪)匹配到的文件或目录;

  此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

  比如:1)规则:myfolder/* 
     说明:忽略目录 myfolder 下的全部内容;不管是根目录(.gitignore文件所在的目录)下的 /myfolder/ 目录,还是某个子目录 /child/myfolder/ 目录,都会被忽略;

  (2)规则:/myfolder/* 
     说明:只忽略根目录下的 /myfolder/ 目录的全部内容;

但是有时候在.gitignore中新添加规则然后运行 git add . 还是会将不想要的文件添加进去,这是因为.gitignore还没有生效(因为版本控制不会因为你现在修改了.gitignore文件而将你已经添加进去的文件删除),不过可以这样(一定要先commit,不然所做的修改会丢失!)

git commit -am "commit everything first!"

git rm -r --cached . // 这里会从git仓库中清除所有文件,而不是从硬盘上删除文件

git add . // 这里又将所有文件添加进git仓库,同时.gitignore规则会生效

git commit -m "fixed untracked files"

 二. git rm 和 rm 区别

1. git rm 删除文件,会将该删除操作记录下来

 删除后,执行git commit -m 时,会自动将删除该文件的操作提交;

2. rm 删除文件,仅仅是删除了物理文件,并没有将其从git记录中删除

 执行rm删除文件后,单纯执行git commit -m 时,不会将删除记录提交,可执行以下命令:

   git commit -am ‘remove file‘ 才会将删除文件的操作提交

 

以上是关于.gitignore无效解决方案的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 的 .idea 目录加入.gitignore无效的解决方法

1.7 (git相关) .gitignore 添加后无效的解决办法

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

Git 中.gitignore 使用和.gitignore 无效的解决方法

.gitignore忽略target无效

.gitignore 无效