跳至主要内容

版本控制

What?​

版本控制(Version Control)是一套系統和流程,用於追蹤和管理文件(特別是程式碼)的更改歷史。版本控制系統(VCS)記錄每次修改的內容、時間、作者和原因,允許開發者回滾到任何歷史版本。Git 是目前最流行的分散式版本控制系統(Distributed VCS)。

版本控制的核心是 Repository(倉庫),存儲所有文件的完整歷史。每次修改都作為一個 Commit(提交)被記錄,包含一個唯一的哈希值和提交訊息。在團隊開發中,版本控制允許多人同時工作於不同特性,然後通過 Merge(合併)整合代碼。

版本控制不僅追蹤代碼,還支持 Branching(分支)、Tagging(標籤)等高級功能,使得複雜的軟體開發流程成為可能。


Who?​

  • 軟體開發人員和工程師
  • DevOps 工程師和系統管理員
  • 數據科學家和機器學習工程師
  • 任何協作開發項目的參與者

When?​

  1. 初始化新項目時建立 Repository
  2. 完成功能開發後進行 Commit 保存代碼
  3. 並行開發多個功能時使用 Branch
  4. 準備發布時創建 Release 標籤

Where?​

  1. 本地開發環境中的 .git 目錄
  2. 遠程倉庫服務(GitHub、GitLab、Bitbucket)
  3. CI/CD Pipeline 中的代碼拉取和部署階段
  4. Code Review 和 Pull Request 流程

Why?​

  • 代碼安全:保留完整的歷史記錄,任何時刻都可恢復
  • 團隊協作:多人可同時工作而不互相覆蓋
  • 追蹤變更:清晰記錄誰在何時做了什麼改動
  • 實現 CI/CD:自動化測試和部署基於版本控制的事件

How?​

🛠️ 建立階段​

# 初始化本地倉庫
git init my-project
cd my-project

# 或克隆遠程倉庫
git clone https://github.com/username/repo.git

# 配置用戶資訊(首次使用)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 創建文件並暫存
echo "print('Hello')" > main.py
git add main.py

# 創建首個提交
git commit -m "初始提交:添加 main.py"

# 創建分支進行新功能開發
git checkout -b feature/new-feature

# 進行修改和提交
echo "print('Feature')" >> main.py
git add main.py
git commit -m "特性:實現新功能"

# 推送到遠程倉庫
git push -u origin feature/new-feature

🔍 查詢階段​

# 查看提交歷史
git log --oneline -10 # 顯示最近 10 個提交
git log --graph --all # 視覺化分支結構

# 查看當前狀態
git status # 查看工作目錄狀態
git diff # 查看未暫存的改動
git diff --cached # 查看已暫存的改動

# 查看特定提交
git show <commit-hash> # 查看提交詳細內容

# 比較分支
git diff main feature/new # 比較兩個分支的差異

# 查看誰修改了什麼
git blame main.py # 查看每行代碼的最後修改者

# 搜尋提交
git log -S "keyword" # 查找包含特定內容的提交

# 撤銷操作
git revert <commit-hash> # 撤銷特定提交(創建新提交)
git reset --soft HEAD~1 # 撤銷最後一次提交但保留更改

補充說明​

📌 範例比較​

特性GitSVNMercurial
類型分散式集中式分散式
性能快速較慢中等
學習曲線陡峭緩和中等
市場佔有主導過時小眾

🧠 延伸/常見誤解​

  • 誤解:Git 只用於代碼管理。實際上,Git 可用於管理任何文本文件,如文檔、配置和數據。
  • 延伸:Git Workflow(如 Git Flow 和 GitHub Flow)提供了規範的分支管理策略,大型團隊應採用統一的工作流以提高協作效率。