Git 忽略文件不提交到版本库

最近在学习使用git,在自己的项目里也开始使用了。其中有一个十分有用的文件: .gitignore ,其作用是忽略那些你不想提交到版本库里的文件,例如含有密码的本地文件,编译器或者IDE生成的中间文件等。

具体 .gitignore 怎么写,官方文档里已经写的很清楚了,一行一个忽略规则,可以使用*,?等通配符。

其实不用自己从头开始写,在这里https://github.com/github/gitignore已经有前人写好了绝大多数使用场合下的 .gitignore 文件,我们只要拿过来自己稍加修改一下就可以了。

这里说一些需要特别注意的地方。

1、由于git不会加入空目录,所以下面做法会导致tmp不会存在

# 忽略tmp文件夹所有文件
tmp/*

改为以下方法,在tmp下也加一个 .gitignore 文件,内容为:

*
!.gitignore

2、已经commit了的文件,再加入 .gitignore 文件想要忽略他是无效的,需要删除缓存:

git rm -r --cached ignore_file

原因是 .gitignore 文件只能作用于Untracked文件,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。

所以正确的顺序应该是:

  1. 从 Git 的数据库中删除对于该文件的追踪。
  2. 把对应的规则写入 .gitignore 文件,让忽略真正生效。
  3. 提交+推送。

最后需要注意的是,git rm --cached 删除的是追踪状态,而不是物理文件。

3、 .gitignore 文件还有个特殊用途。 一个空的 .gitignore 文件可以当作是一个placeholder 。

当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 你可以创建一个 log 目录,在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。

本文参考了以下内容:

http://blog.csdn.net/xmyzlz/article/details/8592302

https://segmentfault.com/q/1010000000430426


CashQian Blog

欢迎来到我的个人博客网站

友情链接

Powered by Python Blog. Copyright © 2016.

www.cashqian.net. All rights reserved.