本部落格旨在自我學習使用,如有任何疑問請及時聯絡博主
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](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
如果有些檔案已經被你忽略了,當你使用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:1:*.class HelloWorld.class
可以看到HelloWorld.class
匹配到了我們的第一條*.class
的忽略規則所以檔案被忽略了。
6.忽略規則檔案語法
a.忽略指定檔案/目錄
# 忽略指定檔案
HelloWrold.class
# 忽略指定資料夾
bin/
bin/gen/
b.萬用字元忽略規則
萬用字元規則如下:
# 忽略.class的所有檔案
*.class
# 忽略名稱中末尾為ignore的資料夾
*ignore/
# 忽略名稱中間包含ignore的資料夾
*ignore*/
原貼:wolai