Git忽略文件.gitignore的使用

本文轉(zhuǎn)自:http://www.itdecent.cn/p/a09a9b40ad20

一、為什么要使用 .gitignore

當(dāng)你使用git add .的時候有沒有遇到把你不想提交的文件也添加到了緩存中去?比如項目的本地配置信息,如果你上傳到Git中去其他人pull下來的時候就會和他本地的配置有沖突,所以這樣的個性化配置文件我們一般不把它推送到git服務(wù)器中,但是又為了偷懶每次添加緩存的時候都想用git add .而不是手動一個一個文件添加,該怎么辦呢?很簡單,git為我們提供了一個.gitignore文件只要在這個文件中申明那些文件你不希望添加到git中去,這樣當(dāng)你使用git add .的時候這些文件就會被自動忽略掉。

二、忽略文件的原則

  • 忽略操作系統(tǒng)自動生成的文件,比如縮略圖等;
  • 忽略編譯生成的中間文件、可執(zhí)行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產(chǎn)生的.class文件;
  • 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件。

三、使用方法

首先,在你的工作區(qū)新建一個名稱為.gitignore的文件。
然后,把要忽略的文件名填進去,Git就會自動忽略這些文件。
不需要從頭寫.gitignore文件,GitHub已經(jīng)為我們準備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:https://github.com/github/gitignore

比如你的項目是java項目,.java文件編譯后會生成.class文件,這些文件多數(shù)情況下是不想被傳到倉庫中的文件。這時候你可以直接適用github的.gitignore文件模板 https://github.com/github/gitignore/blob/master/Java.gitignore 將這些忽略文件信息復(fù)制到你的.gitignore文件中去:

*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

可以看到github為我們提供了最流行的.gitignore文件配置。
保存.ignore文件后我們查看下git status,檢查下是否還有我們不需要的文件會被添加到git中去:

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   .gitignore
        new file:   HelloWorld.java

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        Config.ini

比如我的項目目錄下有一個Config.ini文件,這個是個本地配置文件我不希望上傳到git中去,我們可以在gitignore文件中添加這樣的配置:

Config.ini

或者你想忽略所有的.ini文件你可以這樣寫:

*.ini

如果有些文件已經(jīng)被你忽略了,當(dāng)你使用git add時是無法添加的,比如我忽略了*.class,現(xiàn)在我想把HelloWorld.class添加到git中去:

$ git add HelloWorld.class
The following paths are ignored by one of your .gitignore files:
HelloWorld.class
Use -f if you really want to add them.

git會提示我們這個文件已經(jīng)被我們忽略了,需要加上-f參數(shù)才能強制添加到git中去:

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   .gitignore
        new file:   HelloWorld.class
        new file:   HelloWorld.java

這樣就能強制添加到緩存中去了。
如果我們意外的將想要忽略的文件添加到緩存中去了,我們可以使用rm命令將其從中移除:

$ git rm HelloWorld.class --cached
rm 'HelloWorld.class'

如果你已經(jīng)把不想上傳的文件上傳到了git倉庫,那么你必須先從遠程倉庫刪了它,我們可以從遠程倉庫直接刪除然后pull代碼到本地倉庫這些文件就會本刪除,或者從本地刪除這些文件并且在.gitignore文件中添加這些你想忽略的文件,然后再push到遠程倉庫。

四、查看gitignore規(guī)則

如果你發(fā)下.gitignore寫得有問題,需要找出來到底哪個規(guī)則寫錯了,可以用git check-ignore命令檢查:

$ git check-ignore -v HelloWorld.class
.gitignore:1:*.class    HelloWorld.class

可以看到HelloWorld.class匹配到了我們的第一條*.class的忽略規(guī)則所以文件被忽略了。

五、忽略規(guī)則文件語法

  • a.忽略指定文件/目錄
# 忽略指定文件
HelloWrold.class

# 忽略指定文件夾
bin/
bin/gen/
  • b.通配符忽略規(guī)則

通配符規(guī)則如下:

# 忽略.class的所有文件
*.class

# 忽略名稱中末尾為ignore的文件夾
*ignore/

# 忽略名稱中間包含ignore的文件夾
*ignore*/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git Ignore 你同樣可以再github中看到這篇文章https://github.com/onlynigh...
    唯夜閱讀 223,325評論 6 59
  • 聲明:本文原創(chuàng),所有轉(zhuǎn)載必須經(jīng)過本人同意,否則默認同意支付本人稿費(千字百元)。---緒文(公眾號:LearnWi...
    日拱一卒wu閱讀 2,214評論 1 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 本文為 Git教程的學(xué)習(xí)筆記,教程源自廖雪峰的博客。這是一個由淺入深,學(xué)完后能立刻上手的Git教程。另,附上另一本...
    七弦桐語閱讀 6,462評論 5 47
  • 最近又拾起寫明信片的愛好,主要是怕喜歡的明信片待在抽屜里發(fā)黃,想著還是寄出去的好。 一共寫了八張明信片。 01 0...
    顏人青閱讀 493評論 0 2

友情鏈接更多精彩內(nèi)容