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

各位夥伴們,

有使用 Git 版本管控機制的朋友們,Visual Studio 2013 早已提供 Git 的支援,包括 Pull, Push, 分支等常見功能,且支援連到其它的 Git repository (例 GitHub);而 TFS 團隊開發平台及 Visual Studio Online 雲端版除了支援集中式 Team Foundation 版控,也支援 Git 分散式版控,讓你建立自己的 Git repository 儲存體。本文介紹如何開始在 Visual Studio 及 TFS 中使用 Git。

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

您可以使用分支切換內容、暫停工作和隔離風險。 某些人會為執行的每個工作建立「主題」分支。 當他們滿意工作時,會將其合併回到 master 分支。 您可以選擇發行分支到遠端儲存機制 (例如 Git Team 專案),以便與其他人共同作業。

例如,您在 interactive 分支中執行某些工作。 在 master 分支上的緊急 Bug 指派給您。 您在 interactive 分支中認可變更。 然後根據master 建立名為 hotfix1 的新分支。 在 hotfix1 分支中完成工作之後,您發行該分支至您的 Team 專案,讓其他人進行測試。 接著切換到interactive 分支,繼續完成工作。 完成時,您將這些變更合併至 master,並將其推送至 Team 專案。

建立分支

從分支頁面 (鍵盤:Ctrl + 0、N) 建立分支。
 

提示: 如果您需要擱置一些變更,請根據正在處理的分支建立新分支,然後在新分支中認可變更。

在分支間切換

 
當您切換分支時,會將工作區從檔案的某個版本切換到另一個版本。
 

您可以從分支頁面 (鍵盤:Ctrl + 0、N)、首頁 (鍵盤:Ctrl + 0、H)、變更頁面 (鍵盤:Ctrl + 0、G) 和認可頁面 (鍵盤:Ctrl + 0、O) 切換分支。

合併分支

 
當您準備好時,請將某個分支中完成的工作合併至另一個分支。 例如,Raisa 完成其本機 interactive 主題分支的一些工作,因此,她要將這個工作整合至小組的 master 分支。 她將 interactive 合併至 master。
 

發行分支

 
當您要共同作業或保留分支中完成的工作時,您可以發行分支。 例如,Raisa 發行其 hotfix1 分支,讓 Jamal 可以查看她完成的工作。
 

取得 (建立) 已發行的分支

在其中一個小組成員發行分支後,您可以在開發電腦上取得複本,從該處進行變更。 例如,Jamal 要測試 Raisa 發行至 Team 專案的hotfix1 分支。

  1. 移至認可頁面 (鍵盤:Ctrl + 0、O),然後從 Team 專案擷取最新變更。

   
2. 從分支頁面,在開發電腦上建立分支的複本。
 

移除分支  

當您將變更合併至另一個分支或決定放棄工作後,就可以移除分支。 您必須先將您的工作區切換到另一個分支,才可以移除分支,如上所述。

JJ190809.collapse_all(zh-tw,VS.120).gif取消發行遠端分支

您的開發電腦上必須有遠端分支的複本,才能取消發行該分支。 如果還沒有,請參閱取得 (建立) 已發行的分支。 您也必須擁有足夠的權限。 否則,當您嘗試時會發生錯誤。

在您取消發行分支之後,如果不再需要資料,就可以刪除本機複本。

刪除本機分支

重要事項: 在您刪除本機分支之前,請確定您的小組在其他位置具有複本,或者它不包含您可能需要的任何認可。 如需如何檢視分支內容的詳細資訊,請參閱以下各節。

您可以從分支頁面刪除本機分支。

從您的開發電腦檢視分支的內容

您可以檢視已發行和已取消發行的分支記錄,以及每個認可的詳細資料。 若要確保您取得已發行之分支的最新記錄,請移至認可頁面 (鍵盤:Ctrl + 0、O),從 Team 專案擷取最新認可。 然後檢視記錄。

請參閱 在 Git 中檢視和管理過往的版本

從 Web 瀏覽器檢視已發行之分支的內容

您可以在 Web 瀏覽器 (鍵盤:Ctrl + 0、A) 中取得有關已發行之分支的詳細資訊。

探索已發行之分支的檔案

您可以在已發行的分支中探索及檢視檔案內容。

取得已發行之分支的記錄

您可以檢視已發行分支的記錄。

請參閱 在 Git 中檢視和管理過往的版本

JJ190809.collapse_all(zh-tw,VS.120).gif比較發行的分支

您可以比較某個發行的分支與其他發行的分支。

例如,hotfix1 分支有一個認可是 interactive 分支缺少的,但是前者缺少兩個 interactive 分支所擁有的認可。 您可以選擇連結,進一步向下切入,以取得有關這些差異的詳細資料。 您也可以從分支的內容功能表進行比較。
 

頁面會顯示兩個 hotfix1 所缺少的而 interactive 所擁有的認可。
 

當您選擇 交換分支時,頁面會顯示 hotfix1 所擁有的而 interactive 所缺少的認可。

問與答

  • 問:當我嘗試合併時,被衝突封鎖。 如何解決衝突?

    答: 解決衝突

  • 問:當我建立分支時,選擇 branch-name (本機分支) 或 origin/branch-name (遠端分支) 是否有關係?

    答:可以。 例如:


    如果您從 interactive 建立分支,該分支是未發行的。 這表示它只存在於開發電腦上,直到您決定將其發行。 如果您從origin/interactive 建立分支,該分支會自動發行。  

  • 問:當我嘗試切換至另一個分支,為什麼收到了下列訊息?

    答:如果您目前的分支所參考的認可不同於您要切換至的分支 (通常是如此),必須先認可或復原未經認可的變更

  • 問:如果我尚未準備好認可變更,但是我要切換到另一個分支,該怎麼辦?

    答:您有幾個選項:

    • 如果您不需要變更,可以從變更頁面 (鍵盤:Ctrl + 0、G) 復原變更。

    • 您可以建立新的本機分支,在其中認可變更。 例如,您在 master 分支中進行某些變更。 您決定要將這些變更擱置,並嘗試另一種做法。 您可以根據 master 建立 possible_fix 分支,切換至 possible_fix,然後在該分支中認可變更。

    • 您可以從命令提示字元隱藏 (stash) 變更。 請參閱 Git 命令提示字元的工作

  • 問:我要將我的主題分支合併到我們的 master 分支。 主題分支包含我不要放在記錄中的許多認可。 在合併之前,如何將多個認可結合為單一認可?

    答:您可以從命令提示字元合併 (squash) 認可。 請參閱 Git 命令提示字元的工作

  • 問:我在 [發行的分支] 區段中看到分支,不過在入口網站上看不到該分支。 發生什麼情況? 該分支是否已發行?

    答:當分支出現在 [發行的分支] 區段時,這表示某個小組成員在某個時間點已發行該分支。 在那之後,有人可能取消發行該分支。 您可以將該分支移至 [取消發行的分支] 區段,方法是選取分支,開啟其內容功能表,選取 [取消發行分支],然後選擇 [重新整理]。

  • 問:我可以套用不同的權限到不同的分支嗎?

    答:可以。 請參閱 Git 儲存機制使用權限

  • 問:可以從命令提示字元工作嗎?

    答:可以。 Git 命令提示字元的工作 .

  • 問:我可以從特定的認可或標記建立分支嗎?

    答:可以。 您可以從命令提示字元使用 <start-point> 選項執行這項操作。 請參閱 Git-scm:git-branch(1) 手冊頁面

  • 問:分支有哪些其他用途?

    答:許多小組使用長期存在的分支:

    • 由相同程式碼基底的多個小組管理並行工作

    • 確定由程式碼基底的不同變更集引發的風險

    • 擷取快照,然後支援後續確定的變更 (例如,建立發行分支)

    請參閱 Git-scm:Git 分支 - 分支工作流程Visual Studio TFS 分支指南

  • 問:在哪裡可以取得有關 Git 分支運作方式的詳細資訊?

    答: Git-scm:Git 分支

相關文章: 

開始使用 Git 版控 - 在 Visual Studio 及 TFS 中

在 Git 機制中開發應用程式 - 使用 Visual Studio (連到 TFS 或 GitHub)

在 Git 團隊專案中共同作業 (Pull、Push) - 搭配 TFS 或 Visual Studio Online