版本控制入門:從零開始學 Git
你是否曾經把檔案命名為「報告_v1」「報告_v2」「報告_最終版」「報告_最最終版」?這就是最原始的「版本控制」。而 Git 是現代開發者用來優雅地解決這個問題的工具。
什麼是版本控制?
版本控制(Version Control)是一種記錄檔案變更歷史的系統。它讓你可以:
- 追蹤每一次修改 — 誰在什麼時間改了什麼
- 回到任何歷史版本 — 出錯時可以輕鬆回退
- 多人協作 — 團隊成員可以同時修改不同部分
- 分支開發 — 在不影響主線的情況下嘗試新功能
版本控制系統的演進
| 時期 | 系統 | 特點 |
|---|---|---|
| 1972 | SCCS | 最早的版本控制,本地使用 |
| 1986 | CVS | 集中式,支援多人協作 |
| 2000 | SVN | 集中式,改進了 CVS 的缺點 |
| 2005 | Git | 分散式,由 Linus Torvalds 創建 |
重點摘要:Git 是目前最主流的版本控制系統。根據 Stack Overflow 的開發者調查,超過 93% 的開發者使用 Git。它是分散式的,每個開發者都有完整的版本歷史副本。
Git 的核心概念
Repository(倉庫)
Repository(簡稱 repo)是 Git 追蹤的專案資料夾。它包含所有的檔案和完整的修改歷史。你可以在本地建立 repo,也可以從遠端(如 GitHub)複製一個。
Commit(提交)
Commit 是版本歷史中的一個快照。每次 commit 都記錄了檔案的變更,並附帶一條描述訊息。Commit 是不可變的,一旦建立就無法修改。
Branch(分支)
Branch 讓你在不影響主線(通常是 main 分支)的情況下進行開發。你可以在分支上自由實驗,完成後再合併回主線。
Merge(合併)
Merge 是將一個分支的變更整合到另一個分支的操作。如果兩個分支修改了同一個檔案的同一部分,就會產生「合併衝突」,需要手動解決。
Git 與 Diff 的關係
Git 的核心功能之一就是比較檔案差異。git diff 指令使用 diff 演算法來顯示兩個版本之間的差異。理解 diff 輸出是使用 Git 的基本技能。
diff 輸出中的符號含義:
- +(綠色) — 新增的行
- -(紅色) — 刪除的行
- @@ — 變更位置的標記
如果你想在不安裝 Git 的情況下快速比較兩段文字,可以使用我們的線上文字比對工具。
立即使用文字比對工具 →常用的 Git 指令
| 指令 | 用途 |
|---|---|
git init | 初始化新的 Git 倉庫 |
git clone | 複製遠端倉庫到本地 |
git add | 將檔案加入暫存區 |
git commit | 提交暫存區的變更 |
git push | 推送本地提交到遠端 |
git pull | 從遠端拉取最新變更 |
git branch | 管理分支 |
git merge | 合併分支 |
git diff | 查看檔案差異 |
git log | 查看提交歷史 |
Git 工作流程
一個典型的 Git 工作流程包含以下步驟:
- 從主分支建立新的功能分支
- 在功能分支上進行開發和提交
- 開發完成後發起 Pull Request
- 團隊成員進行 Code Review
- 通過審查後合併到主分支
結語
版本控制是現代軟體開發的基石。Git 雖然學習曲線稍陡,但一旦掌握,你會發現它是你最強大的開發工具之一。從今天開始練習 Git,讓你的專案管理更加專業和高效。
參考文獻
- Git Project. "Git Documentation." git-scm.com, 2024. https://git-scm.com/doc
- Atlassian. "Git Tutorials and Training." Atlassian Git Tutorial, 2024. https://www.atlassian.com/git/tutorials
- Chacon, Scott and Straub, Ben. Pro Git, 2nd Edition. Apress, 2014. https://git-scm.com/book/en/v2
- Stack Overflow. "Developer Survey 2024." Stack Overflow, 2024. https://survey.stackoverflow.co/2024/