今日目標
• 理解 Git Tag 的用途與重要性
• 學習創建和管理版本標籤
• 掌握語義化版本控制 (Semantic Versioning)
• 建立專業的版本發布流程
為什麼需要 Git Tag?
職場真實情況:
客戶:「我們網站出問題了!請回到上週發布的版本!」
你:「呃...哪個 commit 是上週的版本?」
主管:「下次記得用 Tag 標記重要版本!」
使用 Tag 後:
客戶:「請回到 v1.2.0 版本!」
你:「好的!」git checkout v1.2.0
Git Tag 的用途:
• 🏷️ 標記重要版本:如 v1.0.0、v2.1.3
• 📦 發布管理:清楚知道哪個版本發布了什麼功能
• 🔄 版本回溯:快速回到特定版本
• 📋 Release Notes:為每個版本撰寫更新說明
操作步驟
步驟1:建立練習環境
cd company-website
git checkout main
git pull origin main
git log --oneline -5
git status
步驟2:了解版本命名規則 (Semantic Versioning)
版本格式:MAJOR.MINOR.PATCH
v1.2.3
├── 1 (MAJOR) # 重大更新,不向後相容
├── 2 (MINOR) # 新功能,向後相容
└── 3 (PATCH) # Bug修復,向後相容
實際範例:
v1.0.0 # 首次正式發布
v1.0.1 # 修復小 bug
v1.1.0 # 新增功能(向後相容)
v1.1.1 # 又修復 bug
v2.0.0 # 重大更新(可能不相容舊版)
步驟3:創建輕量標籤 (Lightweight Tag)
git tag v1.0.0
git tag
git show v1.0.0
步驟4:創建註解標籤 (Annotated Tag) - 推薦
git tag -a v1.1.0 -m "Release version 1.1.0
新增功能:
Bug 修復:
技術改進:
git show v1.1.0
步驟5:為過去的 commit 建立標籤
git log --oneline -10
git tag -a v1.0.1 abc1234 -m "Release version 1.0.1
Bug 修復:
git push origin v1.1.0
git push origin --tags
git ls-remote --tags origin
步驟7:基於標籤進行開發
git checkout -b hotfix/v1.1.1 v1.1.0
echo "" >> index.html
git add index.html
git commit -m "fix: 改善網頁載入效能"
git tag -a v1.1.1 -m "Release version 1.1.1
Bug 修復:
git checkout main
git merge hotfix/v1.1.1
git push origin main
git push origin v1.1.1
標籤管理進階操作
查看和比較標籤:
git tag
git tag -l "v1.1.*"
git diff v1.0.0 v1.1.0
git log v1.0.0..v1.1.0 --oneline
刪除標籤:
git tag -d v1.0.1
git push origin :refs/tags/v1.0.1
git push origin --delete v1.0.1
檢出標籤:
git checkout v1.1.0
git checkout -b new-feature-from-v1.1.0 v1.1.0
專業版本發布流程
步驟8:模擬完整的版本發布
準備發布 v1.2.0:
git checkout main
git pull origin main
git checkout -b release/v1.2.0
echo "# 公司網站 v1.2.0
git add VERSION.md
git commit -m "docs: 更新版本資訊至 v1.2.0"
git tag -a v1.2.0 -m "Release version 1.2.0 - Major Feature Update
🚀 主要更新
✨ 功能改進
🐛 Bug 修復
📈 技術提升
更新詳情請參考 VERSION.md"
git push origin release/v1.2.0
git push origin v1.2.0
git checkout main
git merge release/v1.2.0
git push origin main
git branch -d release/v1.2.0
git push origin --delete release/v1.2.0
版本管理最佳實踐
✅ 標籤命名規則:
v1.0.0, v1.1.0, v2.0.0
v1.1.0-alpha.1 # Alpha 版本
v1.1.0-beta.2 # Beta 版本
v1.1.0-rc.1 # Release Candidate
v1.0.1, v1.0.2, v1.1.1
✅ 版本發布檢查清單:
發布前檢查:
□ 所有功能測試完成
□ 程式碼 review 通過
□ 更新版本文件
□ 準備 Release Notes
□ 確認向後相容性
發布流程:
□ 建立發布分支
□ 更新版本資訊
□ 建立 annotated tag
□ 推送到遠端
□ 建立 GitHub Release
□ 通知團隊成員
發布後檢查:
□ 驗證部署成功
□ 監控系統狀態
□ 收集使用者回饋
□ 準備下個版本規劃
GitHub Release 整合
在 GitHub 建立 Release:
今日重點回顧
• ✅ 理解 Git Tag 的重要性和用途
• ✅ 學會創建輕量和註解標籤
• ✅ 掌握語義化版本控制規則
• ✅ 建立專業的版本發布流程
核心指令總結
git tag # 查看所有標籤
git tag v1.0.0 # 建立輕量標籤
git tag -a v1.0.0 -m "說明" # 建立註解標籤
git push origin v1.0.0 # 推送特定標籤
git push origin --tags # 推送所有標籤
git tag -d v1.0.0 # 刪除本地標籤
git checkout v1.0.0 # 檢出到特定標籤