🗂️ Git 完整使用教學
從入門到實戰,附完整指令範例 · 適合所有程度的開發者
📋 本文重點
- ✅ Git 是什麼?為什麼要學?
- ✅ 安裝與初始設定
- ✅ 基本工作流程(add / commit / push)
- ✅ 分支管理(branch / merge / rebase)
- ✅ 遠端協作(clone / pull / push)
- ✅ 常見狀況處理(衝突、回滾、stash)
- ✅ 實用指令速查表
🤔 Git 是什麼?
Git 是目前最廣泛使用的分散式版本控制系統,由 Linux 之父 Linus Torvalds 於 2005 年開發。簡單來說,Git 可以幫你:
📸
記錄每次變更
像快照一樣儲存每個版本
⏪
隨時回滾
任何時間點都能還原
👥
多人協作
不怕互相覆蓋程式碼
⚙️ 安裝與初始設定
安裝 Git
# macOS(使用 Homebrew)
brew install git
# Ubuntu / Debian
sudo apt-get updatesudo apt-get install git
# Windows:前往官網下載安裝程式
https://git-scm.com/download/win
初始設定(第一次使用必做)
# 設定使用者名稱git config --global user.name "Your Name"# 設定 Emailgit config --global user.email "you@example.com"# 設定預設編輯器(以 VSCode 為例)git config --global core.editor "code --wait"# 確認設定git config --list
🚀 基本工作流程
Git 的核心工作流程可以用以下步驟理解:工作區 → 暫存區 → 本地儲存庫 → 遠端儲存庫
1️⃣ 初始化專案
# 在現有資料夾初始化 Gitgit init# 或是從遠端 clone 一個專案git clone https://github.com/user/repo.git# clone 並指定資料夾名稱git clone https://github.com/user/repo.git my-project
2️⃣ 查看狀態與差異
# 查看目前狀態(哪些檔案被修改/新增)git status# 查看具體修改內容git diff# 查看已暫存的差異git diff --staged# 查看提交歷史git log# 精簡版 log(每筆一行)git log --oneline --graph --all
3️⃣ 加入暫存區(Stage)
# 加入特定檔案git add index.html# 加入特定資料夾git add src/# 加入所有變更git add .# 互動式選擇要加入的內容git add -p
4️⃣ 提交(Commit)
# 提交並附上訊息git commit -m "feat: 新增使用者登入功能"# 一次完成 add + commit(已追蹤的檔案)git commit -am "fix: 修正登入驗證邏輯"# 修改上一筆 commit 訊息git commit --amend -m "新的 commit 訊息"
💡 Commit 訊息建議格式:feat: 新功能 fix: 修正錯誤 docs: 文件更新 refactor: 重構 chore: 雜務
🌿 分支管理(Branch)
分支是 Git 最強大的功能之一,讓你可以在不影響主線的情況下開發新功能。
建立與切換分支
# 列出所有本地分支git branch# 列出所有分支(包含遠端)git branch -a# 建立新分支git branch feature/login# 切換分支git checkout feature/login# 建立並立即切換(推薦方式)git checkout -b feature/login# Git 2.23+ 新語法git switch -c feature/login# 刪除分支git branch -d feature/login# 強制刪除(未合併的分支)git branch -D feature/login
合併分支(Merge)
# 切換回主分支git checkout main# 將 feature/login 合併進來git merge feature/login# 保留分支歷史的合併(no fast-forward)git merge --no-ff feature/login# 取消合併(發生衝突想放棄)git merge --abort
Rebase(進階)
# 將目前分支 rebase 到 maingit rebase main# 互動式 rebase(整理 commit 歷史)git rebase -i HEAD~3# 取消 rebasegit rebase --abort# 繼續 rebase(解決衝突後)git rebase --continue
☁️ 遠端協作(Remote)
# 查看遠端設定git remote -v# 新增遠端(通常叫 origin)git remote add origin https://github.com/user/repo.git# 推送到遠端(第一次需要 -u 設定追蹤)git push -u origin main# 之後只需要git push# 拉取並合併最新變更git pull# 只拉取不合併(fetch)git fetch origin# 推送新分支到遠端git push origin feature/login# 刪除遠端分支git push origin --delete feature/login
🔧 常見狀況處理
😱 處理衝突(Conflict)
當兩個分支都修改了同一個地方,Git 無法自動合併時就會發生衝突。衝突的檔案會出現以下標記:
<<<<<<< HEAD這是你目前分支的內容=======這是要合併進來的內容>>>>>>> feature/login
解決步驟:手動編輯檔案,保留正確內容,刪除標記符號,然後:
git add 衝突的檔案git commit -m "fix: 解決合併衝突"
⏪ 回滾與還原
# 撤銷工作區的修改(還原到上次 commit)git checkout -- index.html# 取消暫存(從 stage 移出)git reset HEAD index.html# 回到上一個 commit(保留修改)git reset --soft HEAD~1# 回到上一個 commit(清除修改)⚠️ 危險操作git reset --hard HEAD~1# 安全地撤銷某個 commit(新增一筆反向 commit)git revert abc1234
📦 暫存工作(Stash)
需要臨時切換分支,但目前工作還沒完成?用 stash 暫存起來!
# 暫存目前所有修改git stash# 暫存並附上說明git stash push -m "進行到一半的登入功能"# 列出所有 stashgit stash list# 取出最近一筆 stashgit stash pop# 取出指定的 stashgit stash apply stash@{2}# 刪除所有 stashgit stash clear
📄 .gitignore 設定
不是所有檔案都需要納入版本控制。在專案根目錄建立 .gitignore 檔案,指定要忽略的檔案:
# 忽略 node_modulesnode_modules/# 忽略環境變數檔案.env.env.local# 忽略編譯產出dist/build/# 忽略 IDE 設定.vscode/.idea/# 忽略 macOS 系統檔.DS_Store# 忽略 log 檔*.log
⚡ 實用指令速查表
| 指令 | 說明 |
|---|---|
git init | 初始化 Git 儲存庫 |
git clone <url> | 複製遠端儲存庫 |
git status | 查看目前狀態 |
git add . | 加入所有變更到暫存區 |
git commit -m "msg" | 提交並附上訊息 |
git push | 推送到遠端 |
git pull | 拉取最新變更 |
git branch -b <name> | 建立並切換分支 |
git merge <branch> | 合併分支 |
git log --oneline | 精簡查看提交歷史 |
git stash | 暫存目前修改 |
git reset --hard HEAD~1 | ⚠️ 強制回到上一版 |
🎯 結語
Git 一開始看起來很複雜,但核心工作流程其實只有幾個指令:add、commit、push、pull。建議從這四個開始練習,熟悉後再慢慢掌握分支與進階功能。
你目前使用 Git 最常遇到的問題是什麼?歡迎在下方留言討論!👇
發表迴響