使 Git 從幾乎所有其他 SCM 中脫穎而出,最受矚目的特色,恐怕非它的分支模型莫屬。 它完全不同於我在此一起比較的其他模型,大部分它們推薦的最佳分支方法僅僅只是複製倉儲 (repository) 到新的目錄而已。
Git 可不這麼做。 Git 讓你可以擁有多個本地的分支,它們可能是完全獨立的,而且建立、合併和刪除這些開發的支線只需要幾秒鐘的時間。
這表示你可以這樣做:
- 建立一個分支來試試新點子,提交 (commit) 個幾次然後切回你原本的分支,加上一個 patch 然後再切回剛剛實驗用的分支,把它合併進來。
- 有一個分支只用來放要釋出的版本,另一個用來合併開發中的部份供測試,其他幾 個小分支用來放每天的開發工作。
- 替每一個你正在實做的新功能建立新的分支,然後你就可以平順的在它們之中切 換,最後刪除掉每一個新功能已經合併回主線的分支。
- 建立一個新的分支做實驗,結果發現這樣行不通就刪掉這個分支;放棄一個分支, 甚至沒有任何人知道它曾經存在 (同時你還可以把其他的分支公佈出去)
你在其他系統上可以找到方法做同樣的事,但是會比較困難且 容易出錯。 Git 讓這個過程變得非常簡單,而且當開發人員開始學習,它常常會改變他們工作的方法。
這基本上對所有分散式 SCM 來說都是一樣的,但是在我的經驗中 Git 把這個特性發揮的更好。 除了 'fetch', 'pull' 和 'push' 這些命令外,幾乎沒有其他命令會需要硬碟之外的東西。
任何分散式 SCM,當然包括 Git,最酷的功能之一就是它是分散式的。 這表示你不是只 "checkout" 目前最新版的原始碼,而是 "clone" 整個倉儲。 這不只讓大部分操作變得比你可能習慣的還要快得多,它還讓你可以離線工作。 這聽起來也許沒有什麼,但是我總是驚訝於我有多麼常離線工作。 當你在飛機上或火車上,你還可以建立分支、合併和提交工作、瀏覽專案的歷史,這是多麼的有生產力。
這表示甚至你是使用中央集中式的工作流程,每一位使用者都有會一份主伺服器的備份,每一份都可以在主伺服器當機或損壞時推上去取代主伺服器。 基本上使用 Git 不會因為遺失單一的點而造成災難,除非就只有那一個點。
而且這不會使得操作變慢太多。平均來說,一次 SVN 的 checkout 只比其他 DSCM 快一點。 當然在我測試過的 DSCM 中,Git 是最快的。
Some additional data:
http://git-scm.com/tools
Free/Paid source control hosting that using Git / SVN
http://unfuddle.com/
http://www.codebasehq.com/
http://github.com/
http://codaset.com/
Some additional data:
http://git-scm.com/tools
Free/Paid source control hosting that using Git / SVN
http://unfuddle.com/
http://www.codebasehq.com/
http://github.com/
http://codaset.com/
No comments:
Post a Comment