前言
在使用Git的时候,有时候会在Git的工作区目录中产生一个.gitignore
文件,该篇来简单介绍一下它的作用以及该如何进行配置。
一、.gitignore文件是什么?
有的时候在IDE中使用Git拉取了GitHub上的开源代码的时候总会看到工作目录中有一堆的文件和目录,其中就有一个.gitignore
文件,对于初学者来说不影响使用就不会去着重理会它,但这可能就在日后的使用中留下了隐患。
例如,有些时候,你需要在Git的工作目录中加入某些需要的文件,例如一些新增的配置文件,等。但是很多配置文件中会有一些重要的私密信息,你不想将其进行提交。所以当你每次在使用git status
查看状态时,总会报出Untracked files ...
这行信息,让你总是要去查看一下是否有什么遗漏。这在使用Git中会带来很不好的体验。此时就需要用到.gitignore
这个配置文件了。
Git考虑到这个问题,所以在Git工作区的根目录下创建一个特殊的.gitignore
文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。 这也就是它的作用啦~。忽略一些特殊不需要或者不想add的文件。
二、如何配置.gitignore文件?
当然一般情况下不需要我们自己从头写编写.gitignore文件,在GitHub中有一个仓库已经为我们总结了各种情况下.gitignore
文件的配置方式,我们只需要按需组合,并加以修改就可以使用了。所有配置文件可以直接在线浏览:github/gitignore
这里一般我们配置忽略文件的原则是:
-
忽略操作系统自动生成的文件,比如缩略图等;
-
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
-
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
windows系统忽略文件示例:
# Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk
最后一步就是把.gitignore
也提交到Git,就完成了!当然检验.gitignore
的标准是git status
命令是不是说working directory clean
。
注意⚠️:在Windows系统中,如果在资源管理器里新建一个
.gitignore
文件,它会非常弱智地提示你必须输入文件名,无法直接创建。此时你在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore
了。
三、.gitignore文件在使用中的问题
-
有时候你想添加一个文件到Git,但发现添加不了,原因是这个文件被
.gitignore
忽略了$ git add App.class The following paths are ignored by one of your .gitignore files: App.class Use -f if you really want to add them.
你会发现它会提示你使用
-f
参数来执行添加的操作:$ git add -f App.class
-
有可能这个
.gitignore
文件不是你编写的,但是它编写的不符合实际需求,你可以使用git check-ignore
命令进行检查,看是哪一个规则有问题了:$ git check-ignore -v App.class .gitignore:3:*.class App.class
这个输出是Git在告诉我们,.
gitignore
的第3行规则忽略了该文件,此时对这条规则进行修改就好了。 -
有的时候你要添加的文件和忽略规则是包含关系,就是你想要提交的某个文件属于忽略规则中的某一类,除了使用
-f
参数 进行强行添加到版本库中外,还可以在文件中配置排除忽略某个文件,例如:
在.gitignore
文件中配置了如下规则:# 忽略所有.开头的隐藏文件: .* # 忽略所有.class文件: *.class
但是我们发现
.*
这个规则把.gitignore也排除了,并且App.class需要被添加到版本库,但是被*.class
规则排除了。此时可以在
.gitignore
中添加两条排除规则:# 忽略所有.开头的隐藏文件: .* # 忽略所有.class文件: *.class # 排除忽略.gitignore和App.class: !.gitignore !App.class
把指定文件排除在.gitignore规则外的写法就是
!文件名
,所以,只需把例外文件添加进去即可。
总结
- 忽略某些文件时,需要编写
.gitignore
; .gitignore
文件本身要放到版本库里,并且可以对.gitignore做版本管理!