前言
最近接手外包廠商的 code ,看別人的 code 怎麼寫的總是會有一些意外的收穫,也順便複習一下之前遇過的問題,並把它記錄下來。
第一個遇到的問題就是當我修改完成 code 準備要 commit 時,發現 Git 追蹤(track)了一些不應該 push 到 remote repository的東西。
像是 IntelliJ IDE的一些檔案或是 log 等的東西,所以我決定加個.gitignore
加入.gitignore
STEP1. 新增.gitignore
檔案
1 | $ touch .gitignore |
STEP2. 設定要忽略的檔案
1 | ## idea |
像我這樣設定的話就是忽略idea目錄下.xml
與.name
結尾的檔案,以及忽略log
目錄下的所有東西。
結果
在新增.gitignore
這個過濾條件後新增的檔案,如果符合上面的的規則就 Git 就不會去追蹤他
但在新增.gitignore
這個過濾條件前新增的檔案,因為快取的關係,如果沒有額外處理的話還是會被追蹤。
處理新增.gitignore
這個過濾條件前新增的檔案
1 | # 清除本機 Git 的快取,相當於將所有檔案移除 Git 的追蹤,但沒有刪除檔案 |
透過 SourceTree 處理新增 .gitignore
這個過濾條件前新增的檔案
如果不想執行指令的話,可以透過工具 SourceTree 修改 .gitignore,也可以達成一樣的效果
1.假設 .project 這個檔案不想被追蹤,可從路徑 Settings > Advanced 來調整 Repository-specfic ignore list的 .gitignore
檔案
2.儲存後 設定會立即生效,可以看到.project 檔已經不被git 追蹤
其他
除了我在這個狀況裡遇到的那些不想被 push 到 remote repository的東西外,一般也不會把機密資料、java編譯後的檔案(target目錄下的東西)與編輯器的檔案等給放上去。
GitHub 上面也有提供各種專案的 .gitignore
範本,可以參考這個專案進行設定 Github - A collection of useful .gitignore templates