天天看點

Git忽略檔案.gitignore的使用Git Ignore

Git Ignore

你同樣可以再github中看到這篇文章https://github.com/onlynight/ReadmeDemo/tree/master/Readmes/GitIgnore

1.WHY?

當你使用

git add .

的時候有沒有遇到把你不想送出的檔案也添加到了緩存中去?比如項目的本地配置資訊,如果你上傳到Git中去其他人pull下來的時候就會和他本地的配置有沖突,是以這樣的個性化配置檔案我們一般不把它推送到git伺服器中,但是又為了偷懶每次添加緩存的時候都想用

git add .

而不是手動一個一個檔案添加,該怎麼辦呢?很簡單,git為我們提供了一個.gitignore檔案隻要在這個檔案中申明那些檔案你不希望添加到git中去,這樣當你使用

git add .

的時候這些檔案就會被自動忽略掉。

2.忽略檔案的原則

  • 忽略作業系統自動生成的檔案,比如縮略圖等;
  • 忽略編譯生成的中間檔案、可執行檔案等,也就是如果一個檔案是通過另一個檔案自動生成的,那自動生成的檔案就沒必要放進版本庫,比如Java編譯産生的.class檔案;
  • 忽略你自己的帶有敏感資訊的配置檔案,比如存放密碼的配置檔案。

3.使用方法

首先,在你的工作區建立一個名稱為

.gitignore

的檔案。

然後,把要忽略的檔案名填進去,Git就會自動忽略這些檔案。

不需要從頭寫.gitignore檔案,GitHub已經為我們準備了各種配置檔案,隻需要組合一下就可以使用了。所有配置檔案可以直接線上浏覽:https://github.com/github/gitignore

4.栗子

比如你的項目是java項目,

.java

檔案編譯後會生成

.class

檔案,這些檔案多數情況下是不想被傳到倉庫中的檔案。這時候你可以直接适用github的.gitignore檔案模闆。https://github.com/github/gitignore/blob/master/Java.gitignore将這些忽略檔案資訊複制到你的.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檔案中添加這樣的配置:

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

如果有些檔案已經被你忽略了,當你使用

git add

時是無法添加的,比如我忽略了

*.class

,現在我想把

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會提示我們這個檔案已經被我們忽略了,需要加上

-f

參數才能強制添加到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'
           

如果你已經把不想上傳的檔案上傳到了git倉庫,那麼你必須先從遠端倉庫删了它,我們可以從遠端倉庫直接删除然後pull代碼到本地倉庫這些檔案就會本删除,或者從本地删除這些檔案并且在.gitignore檔案中添加這些你想忽略的檔案,然後再push到遠端倉庫。

5.檢視gitignore規則

如果你發下

.gitignore

寫得有問題,需要找出來到底哪個規則寫錯了,可以用

git check-ignore

指令檢查:

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

可以看到

HelloWorld.class

比對到了我們的第一條

*.class

的忽略規則是以檔案被忽略了。

6.忽略規則檔案文法

a.忽略指定檔案/目錄

# 忽略指定檔案
HelloWrold.class

# 忽略指定檔案夾
bin/
bin/gen/
           

b.通配符忽略規則

通配符規則如下:

# 忽略.class的所有檔案
*.class

# 忽略名稱中末尾為ignore的檔案夾
*ignore/

# 忽略名稱中間包含ignore的檔案夾
*ignore*/