.gitignore 用于添加和push时忽略自己不想 track 的一些文件。
其规则和用法如下:
一、在创建本机仓库时,新建 .gitignore 文件(一般不再GitHub上建立仓库时创建,不然pull和push 都会失败):
首先在自己要用Git管理的目录中建立 .gitignore文件
$ vim .gitignore
将自己不想track和push的文件添加到其中,(# 代表注释):
# 忽略当前仓库中所有的 .exe 文件
*.exe
# 忽略当前仓库中所有的 .txt 文件
*.txt
# 只忽略根目录下的 Test目录,Test目录本身也被忽略,而对于子目录下的Test,如/Src/Test则不会被忽略。
/Test
# 忽略仓库中所有的 x64 目录,在不同的子目录下的 x64 目录都会被忽略
x64
# !表示排除该文件,将该文件排除在外
/src/*
!*.txt 除了/src/文件下的 .txt 文件外,其他文件全部忽略
二、有时候在项目开发过程中,突然想把某些文件加入到忽略规则中区,当按照上述方法来操作之后发现并未生效。其原因是 .gitignore 只能忽略那些原来就没有被 track 的文件,如果某些文件已经被 trace 过了,纳入了版本管理中,此时再则修改 .gitignore 就不会起作用。解决方法就是先把本地缓存删除(将其状态改变成未track),然后再提交。主要有如下两种方式,以目录(Folder) 和 文件(file)为例:
方法1:
# 1. 先将对应文件从 git 的索引中删除。
# 如停止 trace fileName 文件
$ git rm --cached fileName
# 或 停止trace folderName目录,将其内部的所有文件索引递归删除
$ git rm -r --cached folderName
# 2. 提交此次untrace 的修改
$ git commit -m "untrace some file."
# 3. 在 .gitignore文件中将此次移除的,不需要再继续trace的文件添加进去。
否则后续进行 git add的时候又会将该这些文件trace进去。
# 4. 提交修改后的 .gitignore文件,后续提交将不再trace前面已经移除的文件
$ git add .
$ git commit -m "update .gitignore file"
$ git push
方法2:与方法1类似,只是先将所有的文件索引全部删除,再更新.gitignore后,再重新git add
先把本仓库的所有文件都变成untrack状态,即在删除所有文件的git 索引。
其删除的是之前添加在 track 中的Index,本机上的文件并未删除。
再更新.gitignore文件,将需要的文件添加进去,最后提交。
$ git rm -r --cached .
# 需要及时更新 .gitignore 文件,否则后面又会重新trace
$ git add . # 重新将所有文件track
$ git commit -m "message"
$ git push
参考资料:
[1] Git忽略提交规则 - .gitignore配置运维总结
[2] Git提交空目录