git update-index --assume-unchanged(忽略已跟踪文件的改动)

 在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  #恢复跟踪

相关文章
相关标签/搜索