iT邦幫忙

2021 iThome 鐵人賽

DAY 12
1
Modern Web

【Git】從零開始學習 Git - 30 天的學習筆記系列 第 12

Day12|【Git】檔案管理 - 忽略檔案 .gitignore

為何會需要 .gitignore ?

常用的情況如下:

  1. 是否常常在 commit 檔案時,會發現有一些明明不是自己建立的檔案,卻因為系統關係會產生編譯檔或是暫存檔,這些都是對專案上較沒有實質的幫助,如果被追蹤的話就很容易造成合作上的麻煩。如 macOS 系統的 .DS_Store
  2. 比較機密的檔案,例如資料庫的存取密碼、AWS 伺服器的存取金鑰、API key,這些都是不會想讓他被 Git 版本控制,以免可能會發生機密外流,或是不恰使用的情形發生。

因此 .gitigonore 檔案就是來解決以上的困擾,在專案目錄裡新增 .gitigonore 檔案,設定想要忽略的規則。

那些關於 .gitignore 的二三事

.gitignore - 請 Git 忽略掉一些對專案不必要的檔案,將此不被紀錄。會設定規則來匹配符合的檔案。

⚠️ 規則符合的檔案如果是在 .gitignore 建立前已被追蹤,則不受 gitignore 規則影響。

.gitignore 的作用域

gitignore 規則定義在哪個檔案中取決於該規則的作用域

  1. 任何目錄下 - 整個資料夾以及全部的子資料夾都受影響。
  2. 可存在於不同資料夾,根據「就近原則」決定結果。
  3. 不同資料夾裡的 .gitignore 檔案都可另外定義內容。

GitHub 上有整理一份個程式語言常見的 .gitignore 範例,如果對於還不清楚哪些檔案需要加到 .gitignore 的話,可以參考這個專案。

網址:https://github.com/github/gitignore

🛠 實際操作

  1. 新增示範目錄(example)及檔案(index.html)

    $ mkdir example # 在 git_practice 資料夾裡新增一個 example 目錄
    $ cd example # 進入 example 目錄裡
    $ git init # 建立數據庫
    $ touch index.html # 建立一個 index.html 檔案
    

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010ed5ux3eyrp.png

  2. 查看當前檔案狀態

    $ git status # 檢查檔案狀態
    

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010kb40YAmhLP.png

    狀態顯示為:Untracked files - 尚未被 Git 追蹤

  3. 新增 .gitignore 檔案,並檢查狀態

    $ touch .gitignore # 新增 .gitignore 檔案
    $ git status # 檢查檔案狀態
    

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010qIciCGr4zN.png

    可以看到 .gitignore 、 index.html 檔案都是不被追蹤的狀態。

    ⚠️ .gitignore 是不會自己忽略自己的喔!

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010J4jKM6PLX3.png

    補充:git init 會在目錄下新增一個 .git 目錄讓 Git 版本控制
    貼心提醒:Shift+Command+ . 三鍵同時按下即可看到被隱藏的檔案唷!

  4. 還沒制定規則之前,可以先嘗試手動將 index.html 檔案加入 .gitignore 檔案後存擋(command + s)。並查看狀態。

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010mqnRiq7olQ.png

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010zskS9Bun1U.png

    即使被忽略,工作目錄上依然看得到檔案。

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010CF2HZTEe5Y.png

    檢查狀態可以發現只剩下 .gitignore,index.html 已被 Git 忽略掉了。

    • 除了單一寫檔名以外,我們也可以針對我們各種需求去制定想要忽略掉的規則,將這些規則寫在.gitignore 的檔案裡就可以了。以下示範幾個規則:

      https://ithelp.ithome.com.tw/upload/images/20210926/20141010Hv9Kt5EymG.png

      * (全部)、 .附檔名目錄名稱/

    只要符合以上規則的檔案都會被 Git 自動忽略掉。

  5. 若我們將 .gitignore 刪除,那麼這些檔案就會重回到 Untracked files

    https://ithelp.ithome.com.tw/upload/images/20210926/20141010EbPGWW4Vf0.png
    https://ithelp.ithome.com.tw/upload/images/20210926/201410103KMjbQdTHk.png


🤔 如有符合規則的忽略檔案,但是想要將他加進 GIt,可以怎麼做呢?

$ git add -f 檔案名稱
// -f 參數為強制刪除的意思,同等於 --force

如此一來就可以強制 add 被忽略的檔案。

🤔 如何清除被忽略的檔案

一口氣清除已經被忽略掉的檔案:git clean 指令並配合 -x 參數 。

$ git claen -fx #強制清除已被忽略的檔案
// -f 參數為強制刪除的意思,同等於 --force

上一篇
Day11|【Git】檔案管理 - 重新命名檔案 git mv
下一篇
Day13|【Git】檔案管理 - 檔案還原 git checkout
系列文
【Git】從零開始學習 Git - 30 天的學習筆記30

尚未有邦友留言

立即登入留言