你有沒有遇過這種情況:改了一堆程式碼,結果改壞了,想回到之前的版本,卻發現根本回不去?
或者,和同學一起做專案,兩個人同時改同一個檔案,最後合併的時候整個亂掉?
Git 就是解決這兩個問題的神器,也是全球每一位工程師每天都在用的工具。
1. Git 是什麼?
Git 是一個版本控制系統(Version Control System),它會追蹤你的程式碼每一次的變動,讓你可以:
- 隨時回到任何一個過去的版本(像時光機)
- 多人同時開發同一個專案(不會互相覆蓋)
- 實驗新功能而不影響主線程式碼(用「分支」隔離)
- 知道誰改了什麼、什麼時候改的(完整歷史紀錄)
Git 和 GitHub 的差別:
- Git — 在你電腦上運行的版本控制工具(本地端)
- GitHub — 一個存放 Git 儲存庫的雲端平台(遠端)
就像 Word 和 Google Drive 的關係:Word 是編輯工具,Google Drive 是儲存分享的地方。
2. 安裝 Git
Windows
前往 https://git-scm.com 下載安裝,安裝過程全部使用預設選項即可。
Mac
打開終端機輸入:
| |
如果尚未安裝,Mac 會自動提示你安裝 Xcode Command Line Tools。
確認安裝成功
| |
3. 第一次使用 Git:設定身份
在開始用 Git 之前,要先告訴它你是誰(這些資訊會附在每一次的提交紀錄上):
| |
只需要設定一次,之後所有專案都會使用這個身份。
確認設定是否成功:
| |
4. Git 的核心概念:三個區域
要理解 Git,最重要的是搞清楚這三個區域:
| |
- 工作目錄:你平時寫程式的地方,Git 會追蹤這裡的變動
- 暫存區(Index):你決定「這些改動要放進下一個版本」就先放這裡
- 本地儲存庫:正式存下來的版本紀錄,永遠不會消失
5. 最常用的 Git 指令
初始化儲存庫
| |
這個指令會在你的資料夾裡建立一個隱藏的 .git 資料夾,Git 的所有版本資訊都存在裡面。
查看狀態
| |
這是你最常用的指令,它會告訴你:
- 哪些檔案被修改了(
modified) - 哪些檔案是新加的還沒被追蹤(
untracked) - 哪些改動已經在暫存區了(
staged)
加入暫存區
| |
提交(Commit):正式儲存版本
| |
-m 後面的字串是提交訊息(Commit Message),用來描述這次改了什麼。
好的 Commit Message 應該要:
- 用動詞開頭,描述「做了什麼」
- 讓任何人一看就知道這次改動的目的
| |
查看提交歷史
| |
每一筆 commit 都有一個獨一無二的 Hash ID(例如 a3f5b2c),你可以用這個 ID 回到任何一個版本。
查看改動內容
| |
回到過去的版本
| |
如果真的要「撤銷」最近的提交:
| |
6. 分支(Branch):安全實驗新功能
分支是 Git 最強大的功能之一。想像一下:你的網站已經上線了,突然想加一個新功能,但又怕改壞原本的程式碼。
分支讓你在「平行宇宙」裡開發,不影響主線。
| |
常用分支指令
| |
合併分支(Merge)
當你的新功能開發完畢,要把它合回主線:
| |
7. 解決合併衝突(Merge Conflict)
兩個人同時改了同一個地方,Git 無法自動決定要用哪個版本,就會出現「合併衝突」。
衝突的檔案裡,Git 會自動插入標記:
| |
解決方法:
- 打開有衝突的檔案
- 找到
<<<<<<<、=======、>>>>>>>這些標記 - 手動決定要保留哪個版本(或兩個都要的話,手動合併內容)
- 刪除標記符號
- 再次
git add和git commit
8. 連接到 GitHub:把程式碼放上雲端
第一步:在 GitHub 建立新儲存庫
- 登入 https://github.com
- 點擊右上角的 「+」,選 「New repository」
- 輸入儲存庫名稱,點 「Create repository」
第二步:把本地儲存庫連接到 GitHub
GitHub 建立完後,會顯示一組指令,複製貼上執行:
| |
以後只要用 git push 就能同步上去。
第三步:常用的遠端同步指令
| |
9. .gitignore:告訴 Git 哪些檔案不要追蹤
有些檔案不應該上傳到 GitHub,例如:
node_modules/(npm 套件資料夾,幾百 MB,每個人自己裝就好).env(環境變數,裡面可能有 API 金鑰等機密資訊)- 系統產生的暫存檔(
.DS_Store、Thumbs.db)
在專案根目錄建立 .gitignore 檔案:
| |
Git 會自動忽略這些檔案,不追蹤、不上傳。
10. 完整工作流程:每天的 Git 使用習慣
以下是一個健康的 Git 工作流程:
| |
11. 常見情境與解法
「不小心把不需要的檔案 add 進去了!」
| |
「想撤銷工作目錄的改動,回到上一次 commit 的樣子」
| |
「commit 訊息打錯了,還沒 push 出去」
| |
「想暫時把目前的改動藏起來,去做別的事」
| |
12. 給新手的實戰練習:把你的作品集放上 GitHub
初始化你的作品集專案
1 2cd my-portfolio git init建立
.gitignore1 2 3node_modules/ dist/ .DS_Store第一次提交
1 2git add . git commit -m "初始化作品集專案"在 GitHub 建立新 repo,連接並推上去
1 2git remote add origin https://github.com/你的帳號/portfolio.git git push -u origin main以後每次修改,重複這個流程
1 2 3git add . git commit -m "更新作品集:新增 Vite 練習專案" git push
現在打開你的 GitHub 頁面,你的作品就在上面,有完整的歷史紀錄,全世界的工程師都能看到!
結語:版本控制,是工程師的基本素養
Git 的指令雖然多,但日常用到的其實不超過 10 個:
| 指令 | 用途 |
|---|---|
git init | 初始化儲存庫 |
git status | 查看目前狀態 |
git add . | 加入暫存區 |
git commit -m "" | 提交版本 |
git log --oneline | 查看歷史 |
git branch | 管理分支 |
git checkout | 切換分支 |
git merge | 合併分支 |
git push | 推上 GitHub |
git pull | 從 GitHub 拉下來 |
這 10 個指令,已經能應付你 90% 的日常需求了。
接下來你可以做什麼? 現在你有了作品、有了 GitHub,但如果能讓別人直接在瀏覽器上看到你的網站,那就更棒了!下一篇我們要學如何用 GitHub Pages 免費部署靜態網站,讓你的作品真正上線!
準備好讓全世界看到你的作品了嗎?下一篇見!
