版本管控 Team Foundation Version Control 及 Git 的差異比較 (Visual Studio、TFS、VS Online 皆適用)

各位夥伴們,

版本管控是團隊開發的第一步,不論你的團隊大小,建議您應盡早規畫如何使用版本管控,在 Visual Studio、Team Foundation Sever (TFS) 及 Visual Studio Online (VS Online) 中,支援兩種版控機制 - 集中式 Team Foundation Version Control (TFVC) 版控,及分散式 Git 版控。且不論開發者使用的技術 (.NET, Java, PHP ....) 或工具 (Visual Studio, Eclipse, XCode ....),TFS 及 VS Online 都可支援。本文簡介這兩種版控機制。

微軟開發工具產品經理 Dann Wu 吳典璋

------------------------------------------------------------------------------------------------------------------

不論您的軟體專案是大是小,我們通常建議您在專案週期盡早使用版本控制。

1. 何時應該使用版本控制?

 

在您建立程式碼專案時 (鍵盤:Ctrl + 0、N),可以選擇將專案加入至版本控制。

新增專案

您應該選取方塊嗎? 簡短的答案是「是」。 更詳細的答案取決於您的情況。

ms181368.collapse_all(zh-tw,VS.120).gif小型專案

即使您單獨進行小型專案,仍可使用版本控制來改善您的個人產能,並且解決困難的問題。

我只想要立即開始撰寫程式碼。我不確定現在是否要共用,不過未來可能會需要

在您撰寫第一行程式碼之前,就可以開始使用 Git 版本控制,幾乎免費且沒有風險。您可得到許多好處,包括在遇到麻煩時可以還原至已知良好狀態。這一切都是在您的本機開發電腦上執行,不需要伺服器。當您準備好時,您可以在 Visual Studio Online 或 TFS 中快速共用您的程式碼並開始共同作業。
開始使用 Git

我正在尋找能立即輕鬆與其他人共同作業的簡單系統。

不需太多額外的時間,您可以使用 Team Foundation 版本控制 (TFVC) 建立 Team 專案並開始使用。您可以使用 Visual Studio Online 或內部部署 Team Foundation Server (TFS)。
開始使用 Team Foundation 版本控制 (TFVC)

ms181368.collapse_all(zh-tw,VS.120).gif大型專案

如果您與小組共事或進行複雜專案,則必定要在共用的版本控制檔案系統中工作,以便改善共同作業和透明度。如果您使用 TFS (內部部署在雲端),您也可以利用整合自動化組建專案計劃和追蹤,以及其他 Application Lifecycle Management 功能

2. 我應該使用哪個版本控制系統?

 

當您建立新的 Team 專案時,選擇您的小組將在該專案中使用的版本控制系統:Team Foundation 版本控制 (TFVC) 或 Git。 這是您建立的每個 Team 專案的永久選擇,不過,您可以在同一個 Team 專案集合中同時使用 TFVC 和 Git Team 專案。

連接到 TFVC Team 專案

ms181368.collapse_all(zh-tw,VS.120).gifTeam Foundation 版本控制 (集中式)

Team Foundation 版本控制 (TFVC) 是集中式版本控制系統。 一般而言,小組成員只能在每個檔案的版本在它們的開發電腦上的。 只在伺服器上維護記錄資料。 分支以路徑為基礎,在伺服器上建立。

TFVC 啟用兩個模型,讓小組進行變更:

  • 伺服器工作區:在認可變更前,小組成員公開地簽出檔案。 大部分作業要求開發人員連接到伺服器 (在過去,小組禁止多人簽出,不過現在較不常見)。這個系統會協助鎖定工作流程。 

  • 本機工作區:每個小組成員接受 codebase 的最新版本的複本與其並離線工作需要。 開發人員簽入變更並在必要時解決衝突。 

進一步了解 Team Foundation 版本控制 (TFVC)

ms181368.collapse_all(zh-tw,VS.120).gifGit 分散式版本控制 (非集中式)

 

Git 是非集中式版本控制系統。 每位開發人員的開發電腦上有整個來源儲存機制的複本。 開發人員可以將每一組都會在開發電腦上的變更和執行版本控制作業 (例如記錄和比較,而不需要網路連接。 分支是輕量型。當您需要交換內容時,您可以建立私用區域分支。 您可以從一個分支快速切換到另一個分支,在程式碼基底的不同變化之間轉換。 之後,您可以合併、發行或處置分支。 

重要事項

Visual Studio 和 TFS 的 Git 是標準 Git。 您可以搭配使用 Visual Studio 與協力廠商 Git 服務,也可以搭配使用協力廠商 Git 用戶端與 TFS。

進一步了解 Git

3. TFVC 和 Git 之間差異的詳細資料

 

以下比較圖表有助於您在 TFVC 和 Git 之間選擇。在 Visual Studio, Visual Studio Online 及 Team Foundation Server 中這兩種版控機制都支援。

功能                    

TFVC (Team Foundation Version Control)                                             

 Git                                                
              警示  當簽入發生時,小組成員會收到電子郵件警示。 

 

當認可推送至伺服器時,小組成員會收到電子郵件警示。 

稽核能力 由於您的小組將所有的工作簽入至集中式系統,您可以識別哪個使用者簽入變更集,並使用比較查看變更內容。 查看檔案時,您可以附註檔案,識別哪些使用者在何時變更程式碼區塊。  

您可以識別哪個使用者將認可推送至 TFS (任何人都可以宣告任何識別做為作者或認可者)。 使用記錄、比較和附註,您可以識別何時進行變更以及變更內容。 

             分支  以路徑為基礎的分支主要做為長期存在的建構,以隔離多個功能小組和版本之間的變更風險。 小組成員通常會為處理的每個分支設定額外的工作區。每個分支中的變更彼此獨立,因此從一個分支切換到另一個之前,您不需要簽入變更。合併同層級分支需要無基礎的合併。

您可以取得分支結構以及已合併變更集之位置的視覺效果。

請參閱 在 Team Foundation 版本控制中使用分支隔離風險。 

分支是輕量型,而且與路徑無關。 有時每天許多開發人員為撰寫程式碼的每個新功能建立分支。 您可以從一個分支快速切換到另一個分支,在程式碼基底的不同變化轉換。您可以建立只存在於開發電腦上的分支,並在準備就緒時共用分支。

您必須先認可、分支、隱藏 (stash) 或復原變更,才能切換分支。合併很簡單,而且與分支所依據的認可無關。

您可以比較分支,查看哪些認可存在於哪些分支上。

請參閱 使用 Git 分支切換內容、暫停工作及隔離風險。 

 組建 (由TFBuild 自動化)         您可以使用所有 TFBuild 功能,在 Team 專案集合內建置所要內容的任何組合。            您可以使用大部分 TFBuild 功能,一次建置一個 Team 專案,以及一次建置一個或多個儲存機制。 閘道簽入組建尚無法使用。符號可以發行,但是尚未製作索引。 
 變更

小組成員可以同時在開發電腦上變更檔案。 當您建立變更集時,可以上傳 (簽入) 變更集至伺服器。 您可以隨時上傳變更。 不過,您可能會被衝突中斷。

簽入變更集之後,您可以變更變更集的註解。 您可以將變更集連結至工作項目,並將其與已完成的組建關聯。

小組成員可以同時在開發電腦上變更檔案。 您在開發電腦上建立認可,而不將其提供給小組。當您準備好時,您必須先提取最新認可, 然後將您的認可上傳 (推送) 到伺服器。 提取時,您可能會被衝突中斷。

您可以 修正最新區域進行。 您無法變更舊做。 您可以將認可連結至工作項目,並將其與已完成的組建關聯。

您可以修改,並合併本機從 命令提示字元進行。

 

  TFS 中的程式碼檢閱                                           尚無法使用,不過您可以從入口網站註解及傳送有關註解的電子郵件
    CodePlex   支援                                         有            有
解決衝突  當您取得、簽入、合併或解除擱置時,可能必須解決衝突。 您可以在 Visual Studio 中解決所有衝突類型。 

當您提取或合併時,可能必須解決衝突。 您可以在Visual Studio中解決內容衝突。其他類型的衝突可以從命令提示字元解決。

檔案儲存 您可以簽入大型二進位檔案。 您也可以合併使用 NuGet 或將它做為替代方法。  您可以簽入小型二進位檔案。避免簽入大型二進位檔案,您通常要修改的尤其是。如果可能,NuGet 請使用做為簽入二進位檔的替代。   
用戶端開發電腦上的檔案   您可以使用 Visual Studio 原始檔控制總管、Windows 檔案總管或命令提示字元瀏覽檔案。 您可以使用 Windows 檔案總管或命令提示字元瀏覽檔案。 目前尚無法在 Visual Studio 中瀏覽檔案。
伺服器上的檔案  

每個 Team 專案包含單一根路徑下 (例如:$/FabrikamTFVC) 的所有檔案。 您可以在檔案層級套用權限

您可以鎖定檔案

您可以在入口網站上和使用 Visual Studio 原始檔控制總管瀏覽檔案。

您的僅在伺服器上的 Team 專案存在。

每個 Team 專案可能包含 一個或多個 Git 儲存機制 ,而且每個時間 Git 儲存機制可以包含一或多個 分支。最細微的權限可套用至儲存機制或分支。

檔案無法鎖定。您可以在入口網站上瀏覽檔案。您可以 推入對多的遠端儲存機制 (例如到您的 Team 專案儲存機制以及 Windows Azure 裝載的網站。

記錄  

 

 

檔案記錄不會複寫到用戶端開發電腦上,只有在您連接到伺服器時可以檢視檔案記錄。

您可以在 Visual Studio 和入口網站上檢視記錄。 您可以標註檔案,查看哪些人在何時變更程式碼行。 

 

 

 

檔案記錄會複寫到用戶端開發電腦上,即使未連接到伺服器時,也可以檢視檔案記錄。

您可以在 Visual Studio 和入口網站上檢視記錄。 在入口網站上,您可以標註檔案,查看哪些人在何時變更程式碼行。 

在開發電腦上管理工作

暫止的變更我的工作頁面 變更認可分支頁面。
移轉路徑   Git-TF             Git-TF

 品質閘道

 您可以使用 CI 組建閘道簽入組建和簽入原則。  您可以使用 CI 組建。 閘道簽入組建尚無法使用。 

 

復原變更 

 

您可以 復原一個或多個變更集

 

您可以 還原執行

縮放  您可以使用本機工作區,進行小型或非常大規模的專案。 支援使用伺服器工作區的巨量規模 (每個分支數百萬個檔案和大型二進位檔案) 專案。 

   

您可以快速啟動小型專案。您可以延展至非常大型的專案,不過您必須預先規劃模組化程式碼基底。您可以在 Team 專案中建立多個儲存機制。

 暫停工作

 

 您可以從我的工作頁面暫停或擱置變更。 

 

您可以從 建立分支 (從 Visual Studio 或命令提示字元) 或藏匿處 (從 命令提示字元

 標記檔案   您可以從 Visual Studio 或命令提示字元,套用標籤至一個或多個檔案的版本。 每個檔案可以將標籤套用至不同的版本。   您可以從命令提示字元套用標記至個別認可。 在 Visual Studio 記錄視窗中檢視標記。 
工具  

用戶端工具:Visual Studio、Eclipse (含 Team Explorer Everywhere)

伺服器工具:TFS

 

用戶端工具:Visual Studio、Eclipse 和其他協力廠商工具

伺服器工具:TFS 和協力廠商服務

使用者介面  

Visual Studio:提供所有常用的功能和許多進階功能。

TFS 入口網站:可以瀏覽、註解、附註和查看程式碼基底的記錄。

TF 命令提示字元:隨 Visual Studio 一起安裝。 用於進階、管理和其他不常用的工作。

Visual Studio:提供許多常用的功能。 一些常見工作的功能尚無法使用。

TFS 入口網站:可以瀏覽、註解、附註和查看程式碼基底的記錄。

協力廠商命令提示字元:您可以從 Visual Studio 安裝它。 用於某些一般工作和許多不常用的工作。 

Visual Studio 相容性  您可以使用所有支援的舊版 Visual Studio。  您可以使用 Visual Studio 2013 (Git 包含在內) 或 Visual Studio 2012 Update 3 (您也必須安裝 Visual Studio Tools for Git)。
入口網站

 您可以瀏覽程式碼基底 (包括分支)、檢視記錄、附註和註解變更集與擱置集,以及執行其他工作,例如將程式碼基底的選定部分臨機操作下載為 .zip 檔案。

 

            您可以瀏覽程式碼基底、檢視記錄、比較分支、附註和註解認可,以及執行其他工作,例如將程式碼基底的選定部分臨機操作下載為.zip 檔案。  

想了解更多關於版本管控,請上 ALM 學習中心 - https://aka.ms/learnalm