当前位置: 代码迷 >> 综合 >> .gitignore 文件和 .gitattributes 文件的使用
  详细解决方案

.gitignore 文件和 .gitattributes 文件的使用

热度:99   发布时间:2023-12-14 12:46:22.0

每当想用 .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。