← 返回首頁
LESSON 027AI 開發13 分鐘

CLI、Git、GitHub 是什麼?看懂 cd、pull、commit、push 之後,AI 開發流程就不再像黑魔法

第 27 篇把 Terminal、CLI、路徑、Git 與 GitHub 一次拆開,實際解釋 cd、git status、pull、add、commit、push 每一行在做什麼,以及為什麼改程式前後都要看版本狀態。

今天用這個比喻Terminal 是工作檯,Git 是你的版本紀錄簿,GitHub 則像把專案放到遠端倉庫,pull 與 push 是把貨物往返同步

上一篇 Lesson 026:Python 開始出現很多這種東西:

python app.py
python -m pip install requests

問題是:這些到底要打在哪裡?

答案通常是終端機。

你可以把開發環境想成一間工作室:

它們經常一起出現,所以新手很容易把四個東西混成一個。

Terminal 和 CLI 不是 GitHub

Terminal 是一個讓你輸入命令、看到輸出的介面。

例如:

pwd

pwd 常用來查看「我目前在哪個資料夾」。它來自 print working directory。

接著:

cd projects

cd 是 change directory,意思是切換資料夾。

再來:

ls

常用來列出目前資料夾裡有哪些檔案。

在 Windows PowerShell 裡,cd、pwd、ls 也通常可以直接使用;底層對應的是 PowerShell 自己的命令或別名。

所以當 README 寫:

cd my-ai-project
python app.py

它其實只是說:

  1. 先進入 my-ai-project 資料夾。
  2. 再叫 Python 執行裡面的 app.py。

Git 是什麼?

你改程式時,很容易遇到:

「剛才明明還能跑,我到底改壞了哪裡?」

Git 是分散式版本控制系統(Distributed Version Control System),它可以記錄檔案如何一路改變。

可以把它想成:每完成一個有意義的修改,就拍下一張專案快照,並附上一句說明。

這張快照就是 commit。

Git 本身可以完全在你的電腦上工作;它不等於 GitHub。

GitHub 又是什麼?

GitHub 是可以存放 Git repository、協作、Code Review、Issue、Actions 等功能的平台。

Repository(常縮寫成 repo) 可以先理解成「一個受 Git 管理的專案資料夾與它的版本歷史」。

所以:

Git = 版本控制工具。

GitHub = 一個常用來存放與協作 Git repository 的線上服務。

clone:第一次把遠端專案整份拿下來

假設 GitHub 上有一個專案:

git clone https://github.com/example/my-ai-project.git

這行的作用是:

把遠端 repository 複製成一份本機 repository。

clone 不只是下載目前檔案,也會帶下 Git 需要的版本資訊。

通常一個專案只需要 clone 一次。之後要拿更新,不是每天重新 clone,而是用 pull 或其他 Git 同步方式。

status:先看現在到底改了什麼

我很推薦新手養成一個習慣:

git status

它不會把你的程式送出去,也不會修改檔案。

它只是告訴你目前 Git 看到的狀態,例如:

所以不知道下一步該不該 pull、commit、push 時,先 git status 通常很有幫助。

pull:把遠端最新修改拿回來

常見命令:

git pull

直覺上可以理解成:

「把遠端 repository 的新變化取回來,並嘗試整合進我現在的本機分支。」

在常見設定下,git pull 會涉及先取得遠端更新,再把它整合到目前工作線。

所以多人一起改專案時,工作前常會先 pull,避免自己建立在很舊的版本上。

但注意:如果你本機已經有互相衝突的修改,pull 可能產生 merge conflict(合併衝突),這時需要人工決定哪一版才是正確內容。

add:挑出這次準備記錄的變更

假設你改了:

app.py
README.md

可以:

git add app.py README.md

git add 的作用不是上傳 GitHub,而是把這些變更放進暫存區(Staging Area),告訴 Git:

「下一次 commit,我打算包含這些修改。」

你也常看到:

git add .

. 代表目前目錄,因此通常會把目前範圍內的多個變更加入暫存區。

這很方便,但新手不要無腦使用。先 git status 看清楚,避免把密碼、巨大的資料檔或不該提交的東西一起加進去。

commit:在本機留下有名字的版本紀錄

git commit -m "Add local model example"

拆開看:

執行成功後,這個 commit 先存在你的本機 Git 歷史裡。

commit 也不等於已經上 GitHub。

這是最常見的誤解之一。

push:把本機的新 commit 送到遠端

git push

它的作用才是把你本機已經建立好的 commit 推送到設定的遠端 repository。

所以可以把流程記成:

修改檔案
↓
git status
↓
git add
↓
git commit
↓
git push

其中:

pull 和 push 到底差在哪?

最簡單的方向感:

GitHub / 遠端
   ↓ pull
你的電腦
   ↑ push

pull 是把遠端變化往自己這邊同步。

push 是把自己已經 commit 的變化送往遠端。

它們不是「下載檔案」與「上傳檔案」這麼單純,因為 Git 在同步的是版本歷史與分支關係,但這個方向感很適合先建立直覺。

一個比較完整、也比較安全的日常流程

git status
git pull
git status
# 修改並測試程式
git diff
git add app.py
git commit -m "Explain model loading"
git push

逐行解釋:

  1. 第一個 git status:確認開始前工作目錄是不是乾淨的。
  2. git pull:拿遠端最新版本。
  3. 第二個 git status:確認同步後狀態。
  4. 中間修改並測試:真的做工作。
  5. git diff:查看你到底改了哪些文字。
  6. git add app.py:只把這次想提交的檔案放進暫存區。
  7. git commit ...:建立本機版本紀錄。
  8. git push:把這筆 commit 送到遠端。

這比「改完直接 git add . && git push」更容易看清楚發生什麼。

branch 是什麼?

分支(Branch) 可以先想成同一份專案歷史裡的一條工作線。

main 常被拿來當主要工作線,但專案也可能建立其他 branch 開發功能,再經過 review 合回 main。

之後看到:

git switch main

意思就是切換到名為 main 的 branch。

如果你目前只是在跟著自己的教學專案走,先把 main、status、pull、commit、push 搞懂就已經很夠用了。

為什麼 Coding Agent 更需要你懂 Git?

後面會介紹 Cursor、Codex 這類 Coding Agent。

它們可以讀檔案、修改多個檔案,甚至執行測試。

正因為改動速度變快,你更需要 Git 幫你回答:

AI 可以幫你寫 code,但版本控制仍然是你檢查與掌握改動的重要安全網。

不要把 API Key push 上 GitHub

之後你會接觸 OpenAI、Gemini、Grok 等 API。

API Key 可以先理解成讓服務辨識與授權你的祕密憑證。

不要把這種祕密直接寫進程式再 push 到公開 repository。

常見做法是使用環境變數與 .env,並把不該提交的檔案放進 .gitignore。

這一點後面介紹模型服務商時會再接回來。

一句話帶走

Terminal / CLI 是你用文字操作電腦的工作檯;Git 負責記錄版本,GitHub 負責遠端存放與協作;pull 是把遠端更新拉回來,commit 是本機建立版本紀錄,push 才是把 commit 送往遠端。

正式資料來源

比喻是理解入口;正式定義與細節請以原始資料為準。

  1. GitHub Docs — Cloning a repository ↗
  2. GitHub Docs — Getting changes from a remote repository ↗
  3. Git Reference ↗
← 上一章026Python 是什麼?為什麼進入 AI 開發後,幾乎到處都會看到它
下一章 →028CUDA 是什麼?為什麼有 NVIDIA GPU 還不夠,AI 軟體還需要一整套加速平台
COMMUNITY

留言

有想法、疑問或想補充的地方,都可以留在這裡。

0 / 1200