每当想用 .gitignore文件的时候,却发现已经push了不必要的文件,但如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。
所以一定要在项目开始就创建 .gitignore文件。
windows中创建 .gitignore文件无法完成,必须填入 .gitignore. 才会创建 .gitignore文件。
.gitattributes 文件的使用根据实际情况可要可不要:https://www.jianshu.com/p/bcdb8fff1687
git命令创建 .gitignore文件: touch .gitignore touch .gitattributes
.gitnore文件过滤有两种模式,开放模式和保护模式:
开放模式: 负责过滤文件夹和文件,也就是说不会被 add. commit push。 例如下: /mtk/ 表示过滤这个文件夹 *.zip *.rar *.tmp 表示过滤某种类型的文件 /mtk/do.c 表示过滤指定文件 *~ 过滤以波浪结尾的文件 保护模式:负责设置哪些文件不被过滤,也就是说会被 add commit push。 例如下: !/mtk 不过滤该文件夹 !*.c 不过滤某种类型的文件 !/mtk/do.c 不过滤指定文件
注意点: 比如项目中有个文件夹 one ,里面有 1.txt 和2.txt ,其中1.txt需要过滤掉,只有2.txt需要push。规则如下: one/*.txt !one/2.txt
不能写成:这样写 1.txt和 2.txt 都会被过滤掉。 one/ !one/2.txt |
其中一些符号解释:
以斜杠“/”开头表示目录; 以星号“*”通配多个字符; 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表; 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录; 注释符号 # |
那如果在创建 .gitignore之前已经push不必要的文件了怎么办,再创建 .gitignore文件如何补救?
比如项目中 one/need.txt 已经push到了github中,再这时创建了 .gitignore文件如何补救? 先在 .gitignore 中添加: one/need.txt 然后使用git命令: git rm -r --cached one/need.txt //该句根据情况,可放在 add之后执行,再 commit push 然后正常的 add commit push 即可。 之后便发现github中便无该文件了,且以后不管修没修改过这个文件,都不会影响到 add commit push。 |
虽然可以补救,但是文件一多就很麻烦,所以最好在一开始就创建.gitignore文件并定好过滤规则,然后再push。