版本控制(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 為核心技術基礎的「雲端版本控制服務平台」,類似的服務還有 GitHub、Bitbucket
- 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