--- title: 【Git】設定 .gitignore 忽略清單 date: 2020-09-06 23:58 is_modified: false disqus: cynthiahackmd categories: - "軟體開發 › 版本管控" tags: - "Git" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> 開發過程中,有些檔案不想也不應該放在 git 裡面一起備份,例如:密碼、大型的預訓練模型或者一些編譯過程所產生的的暫存檔...等。 這時可以設定忽略的規則來過濾上傳的文件。 <!--more--> ## 新增過濾腳本 如果有不想放進去的檔案,只需要可以在專案中的 `.gitignore` 設置忽略規則即可。 檔案不存在?那就新增它吧! ```bash= $ touch .gitignore ``` ## 內容寫法 有了檔案就可以開始編輯內容了: ```bash= $ vim .gitignore ``` 不過如果你是全新專案或者剛開始編輯 `.gitignore`,可以考慮直接用 [github 的模板](https://github.com/github/gitignore),至少一些基本的都可以過濾掉,之後再加上你自己的客製化就好。 例如,我會進一步過濾掉下列文件與資料夾: ``` # ide .idea/ *.iml # tmp data *.swp *~ temporary/ # data dataset/ output/ models/ ``` <br> 基本上語法跟 ==Regular Expression== 相似,不清楚的可以查查[這篇網誌](https://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/),這篇網誌可是我 Regular Expression 的入門呢,至於我自己的筆記?還躺在草稿夾呢 :joy: - `#` : 表註解 - `/` 結尾:表目錄 - `*` : 表示匹配 0 或多個字元 - `?` : 表示匹配 0 或 1 個字元 - `[]` : 表示匹配中括弧內的任一個字元 - `!` : 則是用來表示追蹤特定文件,有可能在前面規則中過濾掉了某個資料夾,但該資料夾下某個文件卻是要追蹤的,就可以用 `!` ## 過濾已追蹤的檔案 `.gitignore` 的過濾效果只會在 Untracked 的檔案上顯示效果,若你這檔案已經列入版本控制,也就是之前被 commit 過了,則不受 `.gitignore` 檔案控制。 如果想讓這已經列管的檔案被忽略,可以先解除版制的追踪 ```bash= $ git rm -r --cached . ``` 然後再 commit 忽略掉這檔案。 :::info **相關文章** 忽然發現我之前寫過 [【Git】取消追蹤檔案](https://hackmd.io/@CynthiaChuang/Ignore-Tracked-Files-in-Git)。 ::: ## 參考資料 1. Fleschier (2018-10-30)。[gitignore的使用及写法](https://fleschier.github.io/2018/10/27/gitignore-learning/) 。檢自 Fleschier 渐寒๑ (2020-07-21)。 2. 高見龍。[【狀況題】有些檔案我不想放在 Git 裡面…](https://gitbook.tw/chapters/using-git/ignore.html) 。檢自 為你自己學 Git (2020-07-21)。 2. github。[A collection of useful .gitignore templates](https://github.com/github/gitignore) 。檢自 gitignore (2020-07-21)。 ## 更新紀錄 :::spoiler 最後更新日期:2020-09-06 - 2020-09-06 發布 - 2020-08-24 完稿 - 2020-07-21 起稿 ::: <br><br> > **本文作者**: 辛西亞.Cynthia > **本文連結**: [辛西亞的技能樹](https://cynthiachuang.github.io/Set-Gitignore-File) / [hackmd 版本](https://hackmd.io/@CynthiaChuang/Set-Gitignore-File) > **版權聲明**: 部落格中所有文章,均採用 [姓名標示-非商業性-相同方式分享 4.0 國際](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en) (CC BY-NC-SA 4.0) 許可協議。轉載請標明作者、連結與出處!