National Yunlin University of Science and Technology
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try a Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

1

Local AI

--

Uedu Code

--

雲林科技大學 AQI 62 26°C PM2.5 12
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 02

修改、比對與忽略檔案

git diff、git log --oneline、VS Code 操作與 .gitignore
Interaction導覽 15 minute(s)

Learning Objectives

  • 用 git diff 看出檔案改了哪幾行,再預存、提交一次
  • 用 git log --oneline 快速瀏覽版本歷史
  • 在 VS Code 裡用滑鼠完成 add 與 commit
  • 用 .gitignore 忽略中間檔、記錄檔與含密碼的設定檔

每天都在做的事:改、比對、再提交

上一課建立了第一個儲存庫並完成第一次提交。之後的日常,就是不斷重複 「修改檔案 → 看看改了什麼 → 預存 → 提交」。這一課練習兩件事:

  1. 提交之前先用 git diff 確認自己改了哪幾行,避免把不該送出的修改一起提交。
  2. 用 .gitignore 告訴 Git 哪些檔案永遠不要管,例如執行時產生的暫存檔、記錄檔,以及存放密碼的設定檔。

還沒做過上一課的話,先完成「建立第一個儲存庫」,這一課的指令都接續在同一個 hello-git 資料夾裡。

動畫:修改、比對、忽略

這個儲存庫已經有一次提交,資料夾裡還多了 app.log、.env、__pycache__/ 這些不該提交的檔案。先修改 hello.py 並用 git diff 看差異、提交;再建立 .gitignore,看那三個檔案從「工作目錄」裡被劃掉(已忽略)。

修改檔案、比對差異、再提交一次

已經提交過的檔案再被修改,就會變成「已修改(modified)」。這一段看看 Git 怎麼告訴你改了哪裡。

  1. 1

    修改檔案:已修改(modified)

    在 README.md 加一行說明。git status 顯示 Changes not staged for commit:檔案改了,但還沒 add。

  2. 2

    git diff:看改了哪幾行

    git diff 列出工作目錄和上一個版本的差異:+ 開頭是新增的行,- 開頭是刪除的行。

  3. 3

    預存並提交

    一樣是 add 再 commit。已經被追蹤的檔案也可以用 git commit -a -m "訊息" 一次完成(-a 只會包含已追蹤的檔案,新檔案還是要先 add)。如果剛剛的提交訊息打錯,可以用 git commit --amend 修改上一次的提交。

  4. 4

    用一行看完歷史

    git log --oneline 把每個版本濃縮成一行,最新的在最上面。

這段導覽完成了

不想打指令?用 VS Code 操作 Git

VS Code 內建 Git,剛剛的流程都可以用滑鼠完成:

  1. 「檔案 → 開啟資料夾」打開專案資料夾
  2. 點左側的「原始檔控制」圖示,按「初始化存放庫」(等於 git init)
  3. 修改檔案後,在「原始檔控制」面板按檔案旁的 + 放進暫存區(等於 git add)
  4. 在上方輸入提交訊息,按 Ctrl + Enter 提交(等於 git commit)

想看版本歷史,可以安裝「Git History」擴充功能。其他常用的圖形化工具還有 GitHub Desktop、PyCharm。 不過指令是所有工具的共同基礎,遇到問題時,看懂 git status 的訊息最可靠。

.gitignore:哪些檔案不該提交

git add . 會把資料夾裡的東西全部加進去,但有些檔案不應該進版本庫:

  • 作業系統或編輯器自動產生的檔案:例如縮圖快取、IDE 的個人設定
  • 程式執行或編譯產生的中間檔:例如 Python 的 __pycache__/、*.pyc、記錄檔 *.log
  • 含有敏感資訊的設定檔:例如存放密碼、API 金鑰的 .env。這類檔案一旦推上公開的 GitHub,就要當作已經外流

在專案根目錄建立一個名為 .gitignore 的文字檔,一行寫一個規則:

寫法 意思
*.log 忽略所有 .log 檔
*.[oa] 同時忽略 .o 與 .a 檔
__pycache__/ 忽略整個資料夾
!keep.log 例外:前面忽略了 *.log,但這個檔案不要忽略
/pack/* 搭配 !/pack/icon/ 忽略 pack 資料夾內容,但保留 icon 子資料夾

GitHub 官方整理了各種語言的範本(github/gitignore),建立儲存庫時也可以直接選 Python 範本。

實際使用 .gitignore

專案裡多了一些不想提交的檔案。看看寫好 .gitignore 前後,git status 有什麼不同。

  1. 1

    撰寫 .gitignore

    用編輯器建立 .gitignore,寫入要忽略的規則。cat 指令可以顯示檔案內容。

  2. 2

    被忽略的檔案不再出現

    現在 git status 只看得到 .gitignore 本身,debug.log、.env 都不會出現,git add . 也不會加入它們。.gitignore 自己要提交,團隊成員才會共用同一套規則。

  3. 3

    檢查哪些檔案被忽略

    git status --ignored 會另外列出被忽略的檔案,用來確認規則有沒有寫對。

  4. 4

    提交 .gitignore;必要時強制加入

    確實需要提交某個被忽略的檔案時,可以用 git add -f 檔名 強制加入;但含密碼的檔案不要這樣做。

這段導覽完成了

想一想:比對差異與忽略檔案

1.

git status 顯示 Changes not staged for commit: modified: README.md,代表什麼?

2.

修改了 hello.py 但還沒有 git add,想看看到底改了哪幾行,該用哪個指令?

3.

git log --oneline 每一行開頭那串像 3f2a1c9 的文字是什麼?

4.

下面哪個檔案最應該寫進 .gitignore?

第 1 次作答

重點精華回顧

  • 改過的已追蹤檔案會顯示為「已修改(modified)」,要再 git add 才會進入下一次提交。
  • git diff 比對工作目錄與上一次的版本;- 是刪掉的行、+ 是新增的行。
  • git log --oneline 一行顯示一次提交,開頭是提交的識別碼。
  • VS Code 的「原始檔控制」面板可以用滑鼠完成 add、commit 與 push,背後執行的仍是同樣的 Git 指令。
  • .gitignore 列出不該提交的檔案(__pycache__/、*.log、.env);git status --ignored 檢查規則是否生效。
這一課完成了!
Next lesson:GitHub 遠端協作與分支
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。