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

<<:  Day 11 - Subscribe 订阅盘中报价资讯(Futures)

>>:  图的连通 (6)

电子发现参考模型(Electronic Discovery Reference Model)

-电子发现参考模型 证人(Witnesses )和证据(evidence)决定了司法结果。及时的电...

[Day 06] - 用Spring Boot 建立Controller

回顾前一天讲的MVC,下达request到Controller後,由Service去执行资料的 增/...

Day 2 - API 文件导览、 Postman 测试取得 Nonce

在进行串接前,首先需要有定义串接的规格,例如:串接的协定 (HTTP、或走 FTP 档案交换等等)、...

前端工程学习日记第6天

作业错误: ul 标签使用上有误哦!ul 的子层只能是 li,也不能单独使用 li 没有 ul 包覆...

[鼠年全马] W39 - 使用Vuex管理资料状态(下)

这周要继续来探讨 Vuex 上周的文章传送门 首先先回顾一下上周提到的 Store 中有这些东西: ...