VSTS中版本控制系統Git與TFVC的區別

VSTS(Visual Studio Team Services)

VSTS簡單說就是微軟TFS(Team Foundation Services)的升級雲版,不用像TFS須要在企業內部服務器上部署,而且是免費提供給用戶使用的。html

每一個有微軟帳號(也是免費註冊的)的用戶均可以申請VSTS,官網申請入口。固然,免費用戶是有必定限制的,好比:每一個項目的成員不能超過5個等。不過通常中小型開發項目,5我的也夠用了。git

VSTS有一點比GitHub好,免費用戶也能夠擁有private空間;GitHub上免費的都是公開的,全部人都能訪問獲取的。因此,既想要免費軟件項目託管平臺,又想要私有項目不公開,VSTS真是一個不錯的選擇。apache

VSTS功能比較多,做爲微軟雲優先新時代的產品,應該會一直持續開發改進的。服務器

VSTS功能

VSTS支持兩種版本控制系統:Git 和 TFVC(Team Foundation Version Control)

在VSTS中新建一個項目時,會遇到版本控制選擇:less

Git是默認的版本控制系統,而且是官網推薦使用的,除非是有特殊需求(好比必定要用TFVC的集中式管控)。分佈式

Git(分佈式)

Git是分佈式版本控制系統。分佈式相比於集中式的最大區別在於每一個開發者在本地都有一份源碼倉庫的備份,開發者能夠提交修改集到本地倉庫,而且在斷網的狀況下也能執行歷史回溯和比較的功能。Git的分支很是輕便,你能夠在本地建立一個私有分支,而且也能夠在本地合併分支。不存在中央服務器。不一樣開發者之間只需把各自的修改推送給對方,就能夠互相看到對方的修改了。通常狀況下,須要有主開發者來決定合併誰的提交(能夠本身解決,也能夠要求開發者之間解決之後再從新提交)。分佈式的好處是靈活自由,大部分時間能夠離線工做。模塊化

TFVC(集中式)

Team Foundation Version Control是集中式版本控制系統。典型的集中式版本控制系統,對於項目成員來講,每個源碼文件的當前版本(服務器最終Check in)有且只有一份(不管是下面哪一種工做流模式)。歷史數據僅保存於服務器上,分支建立也只能在服務器上操做。因此,比較、回滾等操做都須要鏈接服務器。ui

TFVC有兩種工做流模式:url

  • 服務器工做區- 在修改源碼文件以前,必須公開的Check Out源碼文件,以使系統鎖定文件(防止再被其餘人Check Out)。這種模式下,大部分操做都是須要鏈接服務器的。使用服務器工做區的好處是,你能夠擴展codebases到很大的程度(每一個分支百萬個文件,以及大的二進制文件)。Visual Source Safe, Perforce, 以及 CVS也是這種工做流模式。
  • 本地工做區- 每一個項目成員在本地有一份codebase拷貝(只含最新代碼庫,不包含歷史數據),而且能夠在離線模式工做。開發者Check in修改集時,若有衝突,協商解決(好比存在於不一樣開發者電腦上的同一個文件,提交修改時會衝突,具體採用哪一個要靠開發者之間協商)。Subversion也是這種工做流模式。

 

Git與TFVC的比較

範圍 TFVC Git
修改集

團隊成員能夠同時在各自開發電腦上修改文件。你能夠在任什麼時候間上傳修改集。然而,你的上傳可能會被衝突而打斷。spa

你能夠在check in以後修改每一個修改集的註釋。你能夠連接修改集和工做項(work items)或是已經完成的builds。

團隊成員能夠同時在各自開發電腦上修改文件。你能夠獨立地在本身電腦上建立提交,並貢獻給團隊。在你準備上傳(push)到服務器以前,你必須先下載(pull)最新提交的文件。當你下載(pull)時,可能會被衝突而打斷。

你能夠修改本地最新的提交,而不能修改舊的提交。你能夠連接修改集和工做項(work items)或是已經完成的builds。

你能夠經過命令行修改和組合本地提交。

分支

 基於路徑的分支是最經常使用的分支方式,可以規避feature變化對軟件發佈的風險。典型作法是團隊成員對每個分支都創建額外的工做區。

每一個分支的修改集都是獨立無關的,因此你不用在切換分支前作check in。兄弟分支之間的合併須要一個baseless merging。

你能夠可視化觀看分支結構以及修改集在哪裏被合併。

 分支是輕量化的以及路徑無關的。不少開發者有時在平常開發中,會爲每個新特性建立分支。你能夠從一個分支快速切換到另一個分支,輕鬆遊刃於各個分支。你能夠只在本身電腦上建立分支,並在必要時能夠分享給其餘成員。

在切換分支以前,你必須作完提交(commit)、分支(branch)、存放(stash)或撤回(undo)。合併是簡單的,而且與分支所依賴的提交無關。

你能夠比較不一樣的分支,以查看哪一個提交是在哪一個分支上的。

衝突解決 你可能須要在你get,check in,merge,unshelve時解決衝突。你能夠在Visual Studio中解決全部類型的衝突。 你可能須要在你pull,merge時解決衝突。你能夠經過命令行或在Visual Studio中解決內容衝突。
文件存儲 能夠Check in 大二進制文件。 能夠Check in 小二進制文件(像常規文件同樣操做)。如果大二進制文件,須要用Git-LFS  來存儲大二進制文件到VSTS。
歷史 歷史數據不存在開發電腦中,所以只能在鏈接服務器時才能查看歷史。你能夠在Visual Studio或Web portal中查看歷史。你能夠查看誰修改了一行以及什麼時候修改的。 歷史數據複製存儲於開發電腦中,所以在沒有鏈接服務器時也能查看歷史。你能夠在Visual Studio或Web portal中查看歷史。你能夠查看誰修改了一行以及什麼時候修改的。
標籤 你能夠經過Visual Studio或命令行來給一個或多個文件加標籤。每一個文件的不一樣版本均可以加標籤。 你能夠經過命令行來給獨立的提交加標籤。在Visual Studio的history widow能夠查看標籤。
回滾 你能夠回滾一個或多個修改集。 你能夠還原提交(revert a commit)
擴展 本地工做區可用於小型或超大型項目。服務器工做區支持大型擴展(每一個分支百萬個文件,以及大的二進制文件) 能夠快速開始小型項目,可是若是想要擴展成大型項目,你須要提早計劃以便模塊化codebase。你能夠在一個項目(project)中建立多個倉庫。                               
 

 

參考:https://docs.microsoft.com/zh-cn/vsts/repos/tfvc/comparison-git-tfvc?view=vsts

轉載請註明出處:https://www.cnblogs.com/lichu-lc/p/9501451.html

相關文章
相關標籤/搜索