DAZAI CHEN
EN

Git 和 GitHub 是什麼?完整入門指南

用日常比喻解釋 Git 和 GitHub,再教你實際操作。從零開始學版本控制。

GitHub Git 網站開發 版本控制 學習

簡單來說

Git 是一個版本控制系統,自動追蹤檔案的每一次修改。

GitHub 是一個雲端平台,讓你把 Git 管理的專案存到網路上,方便備份和協作。


版本控制解決什麼問題?

在沒有版本控制的情況下,很多人會這樣管理檔案:

報告.doc
報告_最終版.doc
報告_最終版_v2.doc
報告_真的最終版.doc

這種方式的問題是:很難知道哪個才是最新版,也很難追蹤每個版本改了什麼。

Git 的做法不一樣:只維護一份檔案,但記錄每一次修改的歷史。你可以隨時查看任何時間點的版本,也可以回復到之前的狀態。


用 Google Drive 來理解

如果你用過 Google Drive,這些概念會比較容易理解:

Google DriveGit + 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 的關係:本機透過 push 上傳到雲端,透過 pull 從雲端下載

你可以只用 Git 不用 GitHub(專案只存在本機),但 GitHub 讓備份和協作方便很多。


四個核心操作

Commit 和 Push

操作說明
commit把改動存到本機的歷史紀錄
push把本機的 commits 上傳到 GitHub

你可以 commit 多次,最後一次 push 全部上傳。

Fetch 和 Pull

操作說明
fetch下載遠端資訊,但不改變本機檔案
pullfetch + merge,直接更新本機檔案

快速對照

方向安全版直接版
下載 ↓fetch(只看不改)pull(直接更新)
上傳 ↑commit(只存本機)push(上傳雲端)

Pull Request (PR) 是什麼?

在多人協作的專案中,通常不會直接修改主版本。標準流程是:

  1. 建立一個分支(branch)或複製一份(fork)
  2. 在自己的版本上做修改
  3. 發 Pull Request,請求把修改合併到主版本
  4. 其他人審核後,同意就合併

為什麼需要這個流程?

  • 每個修改都經過審核才會進入主版本
  • 可以在 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)請求合併修改

延伸閱讀


資料來源


聯絡我

有任何問題或想要合作?歡迎聯繫我!

dazai.studio

Dazai Chen

dazai.studio@gmail.com