对于“.gitignore”文件(位于项目根目录),我认为这是保证代码轻量化的重要工具,你可以把一些“不是很重要的文件”忽略掉。那什么是不重要的文件呢?比如C语言项目在编译过程中产生的诸多文件、maven项目里的jar……说不是很重要是针对于代码本身而言的!因为这些文件你可以通过代码就可以得到,就拿maven项目而言,你无需手动去寻找各种需要的包,只需要在配置文件里面部署jar包的“坐标”,然后它就自动会帮你下载。
对于“.gitignore”文件,官方是这样介绍的:
gitignore - A
gitignore
file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected.(gitignore文件指定了Git应该忽略的有意未跟踪的文件。已经通过Git跟踪的文件不受影响)
这句话应该很容易理解,就是说如果在开发过程中你新建了“.gitignore”文件,那么就是忽略在这之后的指定的文件,之前的就不忽略。我们使用该文件的情况一般有两种:
1、在新建仓库时就使用该文件
如果是在远程新建仓库的话,在新建过程中它会询问你是否新建“.gitignore”文件,而且那里还会给出对应类型项目的一些参考模板,如下图是github新建仓库的界面,你可以选择需要的模板。那么这个文件在整个项目过程中都是起作用的。
如果是在本地新建仓库则需手动创建,也可复制以前同一类型的仓库的“.gitignore”文件。
这是C语言模板:
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
PS:github有个官方仓库是有关gitignore文件的,里面介绍了各种编程语言的常用模板(github新建仓库就是这个模板)
链接:https://github.com/github/gitignore
2、在新建仓库时没有创建该文件,后续需要再添加进来。
而根据我们之前的了解,该新建只对后续(为跟踪)文件起作用,但是如果我们需要让它对之前已经跟踪的文件也起作用该怎么办呢?
看看官方怎么想的——我们还是有办法的!
The purpose of gitignore files is to ensure that certain files not tracked by Git remain untracked.
To stop tracking a file that is currently tracked, use git rm --cached.
(gitignore文件的目的是确保Git没有跟踪的某些文件仍然处于未跟踪状态。要停止跟踪当前跟踪的文件,请使用git rm——cached。)
我们再看看这个命令:
gti rm --cached
Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.
使用此选项仅从索引中取消阶段和删除路径。不管修改与否,工作树文件都将保持原样。
具体操作如下:
#add .gitignore
#查看状态,是否忽略了指定的文件?
$ git status --ignored #查看状态,包括忽略的文件
#让其对已经跟踪的文件也起作用
$ git rm -r --cached . #清除缓存 -r 表示递归删除(如果有文件夹的话) . 表示所有文件
#查看一下具体效果
$ git status --ignored
$ git add . #重新trace file
$ git commit -m "update .gitignore" #提交和注释
这样就能够使修改后的.gitignore对所有文件生效了。
github对gitignore的介绍:Ignoring files
gitignore详情可见官方资料:git - gitignore
end.