git 入门教程之忽略文件
文件
"并不是所有的牛奶都叫特仑苏",在版本控制系统中也有相似的表达,那就是"并不是所有的文件都需要提交".
有的是因为没必要提交,比如日志文件,系统缓存文件等,有的是因为不能提交,比如个人隐私文件,付费文档等.
正常来说,这些文件都是不应该被提交到版本库,倘若一不留神提交到版本库,要么泄露机密信息,要是造成经济损失,要么对团队其他人工作造成不便.
有鉴于此,我们应该寻求一种机制来规避事故的发生,在 git
版本控制系统中一般有三种不同的解决方案.
最常用也是最简单的当属 .gitignore
文件,不过先不要着急,我们先了解一下忽略原则和配置规则.
忽略文件的基本原则
- 忽略操作系统自动生成的文件,保持不同操作系统的纯粹性和整洁度.
- 忽略工具软件自动生成的文件,避免因个性化配置而产生的工作障碍.
- 忽略个人隐私配置文件,除非你愿意承担公开隐私所带来的潜在风险.
目标: 只提交必要文件,忽略无用文件,尽可能考虑多种情况,不给他人制造麻烦.
忽略文件的配置规则
一行记录代表一条规则,配置规则仅针对尚未被跟踪的文件清单.
# 忽略 `*.a` 文件 *.a # 忽略 `*.A` 文件,但 `somefile.A` 除外. *.A !somefile.A # 忽略 `*.b` 和 `*.B` 文件 *.[bB] # 忽略 `*.c` 和 `*.C` 文件,但 `somefile.C` 除外. *.[cC] !somefile.C # 只忽略 `somepath/` 目录(包括该目录下所有文件),但不忽略 `somepath` 文件 somepath/ # 只忽略 `somepath/` 一级子目录下 `*.txt`,但不忽略 `somepath/sub/*.txt` 文件 somepath/*.txt # 忽略 `somepath` 文件和 `somepath` 目录 somepath # 只忽略 `somepath` 文件,但不忽略 `somepath/` 目录 somepath !somepath/ # 只忽略当前目录下的 `somepath` 文件和目录,但不忽略子目录的 `somepath` /somepath
说明:
#
开头表示注释,!
紧跟某规则之后表示增加例外情况
在线示例和帮助文档
提供两个不错的在线示例,可以参考下在什么场景应该忽略哪些文件以及如何编写忽略规则.
运行
git help ignore
命令查看帮助文档
三种设置方式
git
设置忽略文件有三种方式,如下:
- 全局配置文件(
~/.gitignore
),执行git config --global core.excludesfile ~/.gitignore
命令后适用于所有的版本库. - 远程配置文件(
$PWD/.gitignore
),编辑.gitignore
文件后适用于远程和本地版本库. - 本地配置文件(
$PWD/.git/info/exlude
),编辑$PWD/.git/info/exlude
文件后适用于本地版本库.
最常用方式
三种设置方式中,第二种最为常见,另外两种大致一样,重点在于配置文件如何编写.
创建 .gitignore
文件
参考在线示例以及基本语法编写自定义忽略规则
# General .DS_Store .AppleDouble .LSOverride # Windows thumbnail cache files Thumbs.db ehthumbs.db ehthumbs_vista.db
提交 .gitignore
文件
忽略文件规则配置完毕后,需要将该文件提交到版本库,这样在其他电脑上也能应用相同的忽略规则.