Git忽略一些文件不加入版本控制以及.gitignore文件如何创建 - 小众知识

Git忽略一些文件不加入版本控制以及.gitignore文件如何创建

2013年01月27日 14:18:05 苏内容
  标签: Git/忽略
阅读:7328

1、    环境

Windows XP SP3 + TortoiseGit + msysGit

 

2、  ignore files的三种方法

 

以下涉及的ignore文件均为如下格式:

# 以'#'开始的行,被视为注释.                                                                                                                          

# 忽略掉所有文件名是 foo.txt的文件.

foo.txt

# 忽略所有生成的 html文件,

*.html

# foo.html是手工维护的,所以例外.

!foo.html

# 忽略所有.o和 .a文件.

*.[oa]

 

【方式一】

在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件)。如下图所示。

.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。

 

 

 

【方式二】

       通过配置.git/info/exclude文件来忽略文件。这种方式对仓库全局有效,只能对自己本地仓库有作用,其他人没办法通过这种方式来共享忽略规则,除非他人也修改其本地仓库的该文件。

 

【方式三】

       通过.git/config配置文件的core. Excludesfile选项,指定一个忽略规则文件(完整路径),如下图所示。忽略规则在文件e:/gitignore.txt中(当然该文件名可以任意取)。

       该方式的作用域是也全局的。

 

【例子】

# 忽略*.o和*.a文件

 *.[oa]

# 忽略*.b和*.B文件,my.b除外

*.[bB]

!my.b

# 忽略dbg文件和dbg目录

dbg

# 只忽略dbg目录,不忽略dbg文件

dbg/

# 只忽略dbg文件,不忽略dbg目录

dbg

!dbg/

# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内

/dbg

 

.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得。

1、配置语法:

  以斜杠“/”开头表示目录;

  以星号“*”通配多个字符;

  以问号“?”通配单个字符

  以方括号“[]”包含单个字符的匹配列表;

  以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

  

  此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

2、示例:

  (1)规则:fd1/*
      说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;

  (2)规则:/fd1/*
      说明:忽略根目录下的 /fd1/ 目录的全部内容;

  (3)规则:

/*
!.gitignore
!/fw/bin/
!/fw/sf/

说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;



 

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:

$ cat .gitignore
*.[oa]
*~

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

文件 .gitignore 的格式规范如下:

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

我们再看一个 .gitignore 文件的例子:

# 此为注释 – 将被 Git 忽略
*.a       # 忽略所有 .a 结尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    • 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
    • 可以使用标准的 glob 模式匹配。
    • 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
    • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。



  •     在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:

    # 此为注释 – 将被 Git 忽略

                *.a       # 忽略所有 .a 结尾的文件
                !lib.a    # 但 lib.a 除外
                /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
                build/    # 忽略 build/ 目录下的所有文件

                doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

        这样设置了以后 所有的 .pyc 文件都不会添加到版本库中去。

        另外 git 提供了一个全局的 .gitignore,你可以在你的用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。

    需要执行 git config --global core.excludesfile ~/.gitignoreglobal来使得它生效。

    其他的一些过滤条件

        * ?:代表任意的一个字符
        * *:代表任意数目的字符
        * {!ab}:必须不是此类型
        * {ab,bb,cx}:代表ab,bb,cx中任一类型即可
        * [abc]:代表a,b,c中任一字符即可

        * [ ^abc]:代表必须不是a,b,c中任一字符

        由于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 目录了。
    扩展阅读

    Suese

    2018-03-12 08:49:34

    You revealed it well! benazepril cialis <a href="http://cialisfidel.com/">cialis generic</a> cialis la paz bolivia <a href=http://cialisfidel.com/>cialis generic</a>

    Suese

    2018-03-13 08:56:25

    Lovely facts. Regards. cialis 20mg 4 stГјck preis <a href="http://cialisfidel.com/">cialis without a doctor prescription</a> take cialis on empty stomach <a href=http://cialisfidel.com/>cialis without a doctor prescription</a>

    Suese

    2018-03-13 21:19:09

    Beneficial info. Many thanks! comprar cialis online mexico <a href="http://cialisfidel.com/">cialis generic</a> genuine cialis tablets <a href=http://cialisfidel.com/>buy cialis online</a>

    Suese

    2018-03-14 10:50:01

    Cheers! Helpful stuff! how long does a 5 milligram cialis last <a href="http://cialisfidel.com/">generic cialis</a> cialis pill identification <a href=http://cialisfidel.com/>generic cialis</a>

    Suese

    2018-03-24 10:28:50

    This message is posted here using XRumer + XEvil 4.0 XEvil 4.0 is a revolutionary application that can break any antibot CAPTCHA's. Captcha Bypass Google (ReCaptcha-1, ReCaptcha-2), Facebook, BING, Hotmail, Yahoo, Yandex, VKontakte, Captcha Com - and over 8400 other types! You read this - it means it works! ;) Details on the official website of XEvil, there is a free demo version. Check YouTube video "XEvil ReCaptcha2"

    Suese

    2018-03-24 17:10:45

    This message is posted here using XRumer + XEvil 4.0 XEvil 4.0 is a revolutionary application that can break almost any anti-bot captcha. Captcha Bypass Google (ReCaptcha-1, ReCaptcha-2), Facebook, BING, Hotmail, Yahoo, Yandex, VKontakte, Captcha Com - and over 8400 other types! You read this - it means it works! ;) Details on the official website of XEvil, there is a free demo version. Check YouTube video "XEvil ReCaptcha2"

    Suese

    2018-03-24 20:12:24

    This message is posted here using XRumer + XEvil 4.0 XEvil 4.0 is a revolutionary application that can break any antibot captcha. Captcha Recognition Google (ReCaptcha-1, ReCaptcha-2), Facebook, BING, Hotmail, Yahoo, Yandex, VKontakte, Captcha Com - and over 8400 other types! You read this - it means it works! ;) Details on the official website of XEvil, there is a free demo version. Check YouTube video "XEvil ReCaptcha2"

    Suese

    2018-04-13 18:59:07

    what is thedrug levitra <a href="http://myvardenafilok.com#">levitra 10 mg prezzo</a> levitra multiple births <a href=http://myvardenafilok.com#levitra+rezeptfrei+deutschland>levitra 20 mg</a> levitra significado biblia del

    Suese

    2018-04-14 03:35:02

    levitra typical dose <a href="http://myvardenafilok.com#">buy levitra</a> virketid cialis vs levitra <a href=http://mylevitraok.com#buy+levitra>levitra 20 mg</a> dadha pharma levitra vs viagra

    Suese

    2018-04-14 11:58:10

    40 mg levitra one dose antibiotic for chlamydia <a href="http://myvardenafilok.com#">vardenafil 20mg</a> levitra and cialis <a href=http://myvardenafilok.com#levitra+10+mg+prezzo>levitra 20 mg</a> levitra advice dog

    Suese

    2018-04-14 21:52:15

    levitra muthead compare <a href="http://mylevitraok.com#">levitra generic</a> que es levitra yahoo <a href=http://myvardenafilok.com#buy+levitra>levitra 20mg</a> rayh health care cialis vs levitra

    Suese

    2018-04-15 05:53:33

    wiki levitra prices <a href="http://mylevitraok.com#">generic levitra</a> cialis levitra online <a href=http://mylevitraok.com#levitra+coupon>levitra 10 mg prezzo</a> jovem levitra palco mp3 garota

    Suese

    2018-04-15 09:29:04

    levitra 10 mg prezzo in farmacias <a href="http://mylevitraok.com#">levitra online</a> tipy a inspirace levitra <a href=http://mylevitraok.com#levitra+10+mg+prezzo>levitra 20mg</a> levitra 40 mg preise

    Suese

    2018-04-15 09:33:20

    levitra ruan trucking <a href="http://mylevitraok.com#">levitra online</a> viagra levitra cialis comparativa portatiles <a href=http://myvardenafilok.com#generic+levitra>levitra coupon</a> levitra moveis de madeira

    Suese

    2018-04-15 14:34:15

    levitra adriana's insurance <a href="http://myvardenafilok.com#">levitra 20mg</a> apotik penjual levitra <a href=http://mylevitraok.com#levitra+generic>levitra 20 mg bayer prezzo</a> viagra cialis oder levitra vergleich

    Suese

    2018-04-15 18:45:16

    qual melhor remedio cialis ou levitra 20 <a href="http://mylevitraok.com#">levitra coupon</a> levitra twitter headers <a href=http://myvardenafilok.com#levitra+generic>buy levitra</a> levitra nila tononkira reine

    Suese

    2018-04-15 18:50:54

    viagra cialis oder levitra 20 <a href="http://mylevitraok.com#">buy levitra</a> tania levitra free <a href=http://mylevitraok.com#levitra+10+mg+prezzo>levitra 20mg</a> viagra vs cialis vs levitra alcohol

    Suese

    2018-04-16 00:35:24

    levitra how many hours <a href="http://myvardenafilok.com#">levitra coupon</a> insert levitra package <a href=http://mylevitraok.com#levitra+20+mg>levitra rezeptfrei deutschland</a> 2007 by comment generic leave levitra posted

    Suese

    2018-04-18 22:24:10

    new traderush brand name tr binary options <a href="http://platform-options-try-best-binary.pw/mejores-opciones-binarias-estrategia-comercial-9559.php#">forex srl constanta dubai</a> rhb tradesmart brokerage fee and commissioners <a href=http://binary-try-platform-best-options.pw/virtual-forex-trading-app-8060.php>uni trade brokers sc veracruz 2018</a>

    Suese

    2018-04-19 16:14:55

    levitra advertisement <a href="http://myvardenafilok.com">buy levitra</a> levitra acid reflux <a href=http://mylevitraok.com#levitra+20mg>levitra generic</a>

    Suese

    2018-04-19 20:09:04

    que es levitra yahoo horoscopes <a href="http://mylevitraok.com">levitra 20mg</a> levitra dosis perfume <a href=http://levitra-gg.com#levitra+10+mg+prezzo>levitra rezeptfrei deutschland</a>

    Suese

    2018-04-19 23:50:14

    barney book buy com guest levitra site <a href="http://mylevitraok.com">levitra coupon</a> disfuncion erectil psicologica cialis vs levitra <a href=http://levitra-gg.com#levitra+20+mg>levitra prices</a>

    Suese

    2018-04-20 03:39:54

    levitra 10 mg bucodispersable precious memories <a href="http://levitra-gg.com">levitra 20 mg bayer prezzo</a> canadian overnight pharmacy products levitra vs cialis <a href=http://mylevitraok.com#levitra+generic>levitra 20 mg bayer prezzo</a>

    Suese

    2018-04-20 07:28:31

    levitra house chalton street nw1 contact <a href="http://levitra-gg.com">levitra 20 mg bayer prezzo</a> levitra 20 mg deutschland <a href=http://myvardenafilok.com#levitra+online>levitra rezeptfrei deutschland</a>

    Suese

    2018-04-20 15:28:46

    ervaringen generieke cialis vs levitra <a href="http://levitra-gg.com">levitra prices</a> levitra and grapefruit interaction <a href=http://myvardenafilok.com#levitra+20+mg+bayer+prezzo>generic levitra</a>

    Suese

    2018-04-20 21:54:41

    levitra side effects blindness cures <a href="http://levitra-gg.com">levitra coupon</a> connecticut levitra vardenafil <a href=http://mylevitraok.com#buy+levitra>levitra 20 mg</a>

    Suese

    2018-04-21 01:15:05

    levitra flavio site for sore <a href="http://mylevitraok.com">levitra 20mg</a> viagra levitra ou cialis qual melhor hotel <a href=http://myvardenafilok.com#levitra+20+mg>levitra 20mg</a>

    Suese

    2018-04-21 04:36:31

    levitra 10 mg tablets <a href="http://mylevitraok.com">levitra generic</a> levitra users forum <a href=http://mylevitraok.com#vardenafil+20mg>levitra 10 mg prezzo</a>