Git 和 GitHub 是什麼?完整入門指南
用日常比喻解釋 Git 和 GitHub,再教你實際操作。從零開始學版本控制。
GitHub Git 網站開發 版本控制 學習
簡單來說
Git 是一個版本控制系統,自動追蹤檔案的每一次修改。
GitHub 是一個雲端平台,讓你把 Git 管理的專案存到網路上,方便備份和協作。
版本控制解決什麼問題?
在沒有版本控制的情況下,很多人會這樣管理檔案:
報告.doc
報告_最終版.doc
報告_最終版_v2.doc
報告_真的最終版.doc
這種方式的問題是:很難知道哪個才是最新版,也很難追蹤每個版本改了什麼。
Git 的做法不一樣:只維護一份檔案,但記錄每一次修改的歷史。你可以隨時查看任何時間點的版本,也可以回復到之前的狀態。
用 Google Drive 來理解
如果你用過 Google Drive,這些概念會比較容易理解:
| Google Drive | Git + GitHub |
|---|---|
| 把檔案存到雲端 | push 到 GitHub |
| 從雲端下載檔案 | pull |
| 版本紀錄 | commit 歷史 |
| 分享連結給別人 | 把 repo 設成 public |
| 多人同時編輯 | 多人協作(透過 PR) |
主要差異:Google Drive 是自動同步的,Git 則是手動決定什麼時候存檔(commit)、什麼時候上傳(push)。
手動的好處是你可以控制每次存檔包含哪些改動,而不是每改一個字就同步。
Git 和 GitHub 的差別
| 名稱 | 說明 | 類比 |
|---|---|---|
| Git | 版本控制系統,跑在你的電腦上 | Google Drive 的「版本紀錄」功能 |
| GitHub | 存放專案的雲端平台 | Google Drive 本身 |
Git 負責追蹤修改。GitHub 讓你可以從任何裝置存取專案、跟別人分享、和團隊協作。

你可以只用 Git 不用 GitHub(專案只存在本機),但 GitHub 讓備份和協作方便很多。
四個核心操作
Commit 和 Push
| 操作 | 說明 |
|---|---|
| commit | 把改動存到本機的歷史紀錄 |
| push | 把本機的 commits 上傳到 GitHub |
你可以 commit 多次,最後一次 push 全部上傳。
Fetch 和 Pull
| 操作 | 說明 |
|---|---|
| fetch | 下載遠端資訊,但不改變本機檔案 |
| pull | fetch + merge,直接更新本機檔案 |
快速對照
| 方向 | 安全版 | 直接版 |
|---|---|---|
| 下載 ↓ | fetch(只看不改) | pull(直接更新) |
| 上傳 ↑ | commit(只存本機) | push(上傳雲端) |
Pull Request (PR) 是什麼?
在多人協作的專案中,通常不會直接修改主版本。標準流程是:
- 建立一個分支(branch)或複製一份(fork)
- 在自己的版本上做修改
- 發 Pull Request,請求把修改合併到主版本
- 其他人審核後,同意就合併
為什麼需要這個流程?
- 每個修改都經過審核才會進入主版本
- 可以在 PR 上討論、提出建議
- 保留完整的修改紀錄
- 有問題可以隨時撤回
基本指令
初始設定
# 設定身分(只需要一次)
git config --global user.name "你的名字"
git config --global user.email "your@email.com"
# 建立新的 repository
git init
# 或是複製現有的專案
git clone https://github.com/username/repo.git
日常工作流程
1. 檢查狀態
git status
2. 暫存變更
# 加入特定檔案
git add filename.js
# 加入所有變更
git add .
3. Commit
git commit -m "描述這次的修改"
4. Push
git push
5. Pull
git pull
常見情境
開始新專案
mkdir my-project
cd my-project
git init
echo "# My Project" > README.md
git add .
git commit -m "Initial commit"
# 先在 GitHub 上建立 repo,然後連接
git remote add origin https://github.com/username/my-project.git
git push -u origin main
參與現有專案
git clone https://github.com/username/project.git
cd project
# 做修改...
git add .
git commit -m "描述修改"
git push
建立功能分支
git checkout -b new-feature
# 做修改...
git add .
git commit -m "加入新功能"
git push -u origin new-feature
# 然後在 GitHub 上開 Pull Request
GitHub 的其他功能
| 功能 | 說明 |
|---|---|
| Issues | 追蹤 bug、功能需求、任務 |
| Actions | 自動化流程(測試、建置、部署) |
| Pages | 免費託管靜態網站 |
| README | 專案說明文件,顯示在首頁 |
新手建議
經常 Commit 小而頻繁的 commit 比大的 commit 好,更容易理解和回溯。
寫清楚 Commit 訊息
# 不清楚
git commit -m "fix"
# 清楚
git commit -m "修正手機版登入按鈕無反應的問題"
Push 之前先 Pull
開始工作前先 git pull,確保有最新的版本。
使用 .gitignore
建立 .gitignore 排除不需要追蹤的檔案:
node_modules/
.env
.DS_Store
名詞整理
| 名詞 | 說明 |
|---|---|
| Git | 版本控制系統 |
| GitHub | 雲端平台 |
| Repository (Repo) | 專案資料夾 |
| commit | 存檔到本機 |
| push | 上傳到雲端 |
| pull | 從雲端下載並合併 |
| fetch | 從雲端下載但不合併 |
| Branch | 分支,平行版本 |
| Pull Request (PR) | 請求合併修改 |
延伸閱讀
- 什麼是終端機? - 執行 Git 指令的地方
資料來源
- GitHub Docs - GitHub 官方文件
- Git Documentation - Git 官方文件
- Pro Git Book - 免費 Git 完整指南
聯絡我
有任何問題或想要合作?歡迎聯繫我!