Try   HackMD

版本控制(Version Control)

  • 完整記錄軟體變化的過程(人、事、時、地、物)
  • 紀錄版本變化而衍伸出來的功能
    • 查詢歷史紀錄
    • 復原變更
    • 比對差異
    • 標記版號
    • 變更追蹤
  • 多人版控進一步衍伸出的功能
    • 協同作業
    • 分支合併
    • 版控流程

版本控制的種類

1. 集中式

單一伺服器,記錄所有版本的檔案,且有多個客戶端從伺服器從伺服器取出檔案。
如:CVS, Subversion(SVN) 及 Perforce

  • 優點:
    • 所有版本集中於伺服器管理,可選用鎖定或合併等版控策略
    • 較為精細的權限管控(針對目錄或檔案)
  • 缺點:
    • 沒網路就無法進行版本控管,其中包含:
      • 可本地開發,但無法提交新版本
      • 無法查詢歷史紀錄

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

2. 分散式

客戶端不只是取出最後一版的檔案,而是完整複製整個儲存庫。即使是整個系統賴以運作的電腦損毀,皆可將任何一個客戶端先前複製的資料還原到伺服器。
如:Git, Mercurial, Bazaar, Darcs。

  • 優點:
    • 每位開發人員保有完整的儲存的儲存庫,等於每個人都擁有完整的儲存庫備份
    • 可以在本地端建立離線的版本與歷史紀錄,不需要伺服器支援就可以運作版本控制
  • 缺點:
    • 無法鎖定版控策略(僅能使用合併策略)
    • 無法對專案進行精細的權限控管(但可切割成多個儲存庫)

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

什麼是 Git?

  • Git:是一套免費、開源分散式的版本控制工具
  • GitLab:以 Git 為核心技術基礎的「雲端版本控制服務平台」,類似的服務還有 GitHubBitbucket
  • Git 圖形化工具:以圖形化介面呈現Git本地儲存庫中的資訊
    • Source Tree
    • TortoiseGit(小烏龜)
    • GitHub for Desktop
    • IDE整合的Git
      • Eclipse
      • Visual Studio
      • XCode

Git 基礎操作指令

指令 功能 備註
git init 初始化,創建 .git 目錄 建立一個儲存庫
git add 建立索引 "挑選"想要打包的修改檔案
git commit 將索引中的檔案"打包"並註明內容
git push 將本地儲存庫上傳至遠端儲存庫(例如: GitLab) 先 pull,再 push
git pull 下載遠端儲存庫 可能發生衝突
git branch 列出分支
git checkout <branch name> 切換分支 可能發生衝突
git tag 列出標籤 特別的時間點貼標籤,來表示其重要性
git merge 合併分支 可能發生衝突

標籤(版本號)

版本號結構大概是 v1.3.5,
也就是 version{major}.{minor}.{hotfix}

  • Major: 功能新增會影響舊版使用者 > 強制更新
  • Minor: 功能新增不影響舊版使用者 > 建議更新
  • Hotfix: 單純修 bug 或文字修改

版本控制流程(Git flow)

所有的分支基礎功能都是一模一樣,
但依照產品開發流程的不同,而有不同的版控流程,

下列分支,是人賦予分支的意義下列幾種

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

參考資料

版本控管VCS-基礎概念,SVN、GIT比較
猴子都能懂的Git入門指南
git flow 實戰經驗談 part2 - 可能更好的 gitflow