在git中若是想忽略掉某个文件,不让这个文件提交到版本库中,可使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:
git
# 此为注释 – 将被 Git 忽略缓存
*.a # 忽略全部 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的全部文件
ui
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txtspa
这样设置了之后 全部的 .pyc 文件都不会添加到版本库中去。
版本控制
另外 git 提供了一个全局的 .gitignore,你能够在你的用户目录下建立 ~/.gitignoreglobal 文件,以一样的规则来划定哪些文件是不须要版本控制的。
orm
须要执行 git config --global core.excludesfile ~/.gitignoreglobal来使得它生效。server
其余的一些过滤条件ci
* ?:表明任意的一个字符
* *:表明任意数目的字符
* {!ab}:必须不是此类型
* {ab,bb,cx}:表明ab,bb,cx中任一类型便可
* [abc]:表明a,b,c中任一字符便可
it
* [ ^abc]:表明必须不是a,b,c中任一字符io
因为git不会加入空目录,因此下面作法会致使tmp不会存在 tmp/* //忽略tmp文件夹全部文件
改下方法,在tmp下也加一个.gitignore,内容为
*
!.gitignore
还有一种状况,就是已经commit了,再加入gitignore是无效的,因此须要删除下缓存
git rm -r --cached ignore_file
注意: .gitignore只能忽略那些原来没有被track的文件,若是某些文件已经被归入了版本管理中,则修改.gitignore是无效的。
正确的作法是在每一个clone下来的仓库中手动设置不要检查特定文件的更改状况。
git update-index --assume-unchanged PATH 在PATH处输入要忽略的文件。
另外 git 还提供了另外一种 exclude 的方式来作一样的事情,不一样的是 .gitignore 这个文件自己会提交到版本库中去。用来保存的是公共的须要排除的文件。而 .git/info/exclude 这里设置的则是你本身本地须要排除的文件。 他不会影响到其余人。也不会提交到版本库中去。
.gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 能够看成是一个 placeholder 。当你须要为项目建立一个空的 log 目录时, 这就变的颇有用。 你能够建立一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的建立好一个空的 log 目录了。
---------------------------------------------------------------------------------------------------------------
本地永久忽略,效果的gitignore同样,只不过不适于写到gitignore中而已,能够本身创建一个本地独享的gitignore,而后git config --global core.excludesfile 文件的绝对路径,也能够直接将本地要忽略的文件添加到.git/info/exclude中。
$ git update-index --assume-unchanged /path/to/file #忽略跟踪
$ git update-index --no-assume-unchanged /path/to/file #恢复跟踪