在使用Git进行版本控制时,我们经常会遇到一些不希望提交到版本库的文件,比如包含敏感信息的配置文件或者操作系统自动生成的临时文件。为了管理这些文件,Git提供了.gitignore
文件,它允许我们定义一系列规则来告诉Git哪些文件应该被忽略。
不需要从头写.gitignore
文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class
文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
首先,创建.gitignore
文件并添加规则是很简单的。你可以在Git工作目录的根目录下创建这个文件,并在其中列出你想要忽略的文件或文件模式。例如,如果你在Windows环境下进行Python开发,你可能需要忽略以下文件:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
同时,你可能还有一些个人配置文件,如数据库密码文件,也需要添加到.gitignore
中:
# My configurations:
db.ini
deploy_key_rsa
完成这些规则后,你应该将.gitignore
文件提交到Git,这样所有协作者都能遵循相同的忽略规则。
需要注意的是,.gitignore
文件本身应该被Git跟踪,因为它是一个项目级别的配置文件。正如在开头提到的,GitHub提供了各种预设的.gitignore
模板,你可以直接使用或组合这些模板来创建适合你项目的.gitignore
文件。
如果你发现某个文件被.gitignore
忽略了,但你确实需要将其添加到版本库,你可以使用git add -f
命令来强制添加该文件。如果你不确定是哪个规则导致了忽略,可以使用git check-ignore
命令来检查:
$ git check-ignore -v App.class
.gitignore:3:*.class App.class
此外,如果你的.gitignore
规则过于宽泛,导致一些你实际上想要跟踪的文件也被忽略了,你可以在.gitignore
中添加例外规则。例如,如果你想要跟踪.gitignore
文件和App.class
文件,你可以这样写:
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class
# 不排除.gitignore和App.class:
!.gitignore
!App.class
通过在文件名前加上!
,你可以告诉Git忽略.gitignore
中的某些规则。这样,你就可以在不破坏.gitignore
规则的前提下,添加特定的文件到版本库。