分支

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 |Visual Studio 2022

當人們想要對程式代碼基底進行實驗性、風險或機密性變更時,Git 存放庫分支很有用,但這些變更必須與原始存放庫中的程式碼基底隔離。 新的分支基本上是推送至新遠端存放庫的原始存放庫複本。 分支與原始存放庫無關,除非您指定單一分支,否則是完整的複本。

作為獨立的複本,您對分支所做的變更,例如新增認可或分支,不會與原始存放庫共用。 如果您想要將程式代碼基底變更合併至原始存放庫,您必須建立 提取要求 (PR), 以要求檢閱和核准這些變更。

分叉程式不會將任何許可權、原則或建置管線從原始存放庫傳輸到分支。

本文說明在 Azure Repos Git 存放庫中使用分支,並提供 GitHub 內容的連結,討論如何在 GitHub 存放庫中管理分支。

在本文中,您將了解如何:

  • 在分支之間共用程式碼
  • 在分支 (branch) 和分支 (fork) 之間做選擇
  • 啟用存放庫分支
  • 建立分支
  • 在本機複製您的分支
  • 將本機變更推送至分支
  • 建立並完成 PR
  • 同步處理分支

存取 Azure Repos 的必要條件

  • 您的 Azure DevOps 專案設定中必須啟用 Repos 。 如果 Repos 中樞和相關聯的頁面未顯示,請參閱開啟或關閉 Azure DevOps 服務以重新啟用 Repos

  • 若要在私人專案中檢視程序代碼,您必須是具有 基本 存取層級或更高層級的 Azure DevOps 項目成員。 針對公用專案,每個人都可以檢視程序代碼。

    • 如果您沒有專案,請建立一個專案或 免費註冊。

    • 如果您不是項目成員, 請新增

  • 若要複製或參與私人專案的程式代碼,您必須是參與者安全組的成員,或具有對應的許可權集。 針對公用專案,任何人都可以複製並參與程序代碼。 若要深入瞭解,請參閱 什麼是公用專案?

    注意

    針對公用專案,獲得 項目關係人 存取權的使用者具有 Azure Repos 的完整存取

  • 您的 Azure DevOps 專案設定中必須啟用 Repos 。 如果 Repos 中樞和相關聯的頁面未顯示,請參閱開啟或關閉 Azure DevOps 服務以重新啟用 Repos

  • 若要檢視程序代碼,您必須是具有 基本 存取或更高許可權的 Azure DevOps 項目成員。 如果您不是項目成員, 請新增

  • 若要複製或參與程序代碼,您必須是參與者安全組的成員,或具有您想要變更之專案中的對應許可權。

在分支之間共用程式碼

原始存放庫通常稱為 上游 存放庫。 您可以建立PR來合併任一方向的變更:從分支到上游,或上游到分支。 最常見的方向是從分支到上游。 目的地存放庫的許可權、原則、組建和工作專案將會套用至 PR。

在分支 (branch) 和分支 (fork) 之間做選擇

對於 2-5 名開發人員的小型小組來說,可能不需要分叉工作流程因為每個人都可以在功能分支分支原則中工作,以保護預設分支。 不過,如果您的小組擴充並放大此安排,他們可以切換至分叉工作流程。

如果您的存放庫有大量的隨意或不常認可者,例如 開放原始碼 項目,建議您使用分叉工作流程。 一般而言,只有您專案的核心參與者應具有原始存放庫的直接認可許可權。 其他共同作業者應該使用分叉工作流程來隔離其建議的變更,直到核心參與者有機會檢閱其工作為止。

啟用存放庫分支

若要啟用 Azure Repos Git 存放庫的分支,請參閱 啟用分支

若要啟用 GitHub 存放庫的分支,請參閱 管理組織的分叉原則。

分支工作流程

分叉工作流程包含下列各節所述的五個步驟。

  1. 建立分叉
  2. 在本機複製分支
  3. 將本機變更推送至分支
  4. 建立並完成PR
  5. 同步處理分支

建立分支

下列步驟說明如何派生 Azure Repos Git 存放庫。

注意

若要派生 Azure DevOps 專案中的存放庫,您必須擁有該專案的 建立存放庫 許可權。 存放庫擁有者應考慮建立專用專案分支,並將建立存放庫許可權指派給所有參與者。 如需設定許可權的詳細資訊,請參閱 設定 Git 存放庫許可權

  1. 從網頁瀏覽器,流覽至您想要分叉的 Azure Repos Git 存放庫。 選取 [存放庫 > 檔案 ],然後從省略號功能表中選擇 [分支 ],以開啟 [分支 ] 對話框。

    Azure Repos 中 [存放庫檔案] 頁面上 [更多動作] 功能表中 [分支] 功能表項的螢幕快照。

  2. 在 [ 分支 ] 對話框中,將分叉存放庫命名為分支,選擇您要建立分叉的項目、選取要包含在分叉中的分支,然後選擇 [分支]。 您可以指定分叉是否包含所有分支,或只包含預設分支。 如果存放庫包含數個主題分支,請考慮只在您的分支中包含預設分支。

    Azure Repos 中 [存放庫檔案] 頁面上 [分支] 對話框的螢幕快照。

如需如何派生 GitHub 存放庫的資訊,請參閱 分支存放庫

在本機複製您的分支

分叉存放庫之後, 請複製 分叉,以在計算機上的資料夾中建立本機複本。 您可以從命令行或使用 Visual Studio 之類的 IDE 進行複製。 如需複製存放庫的詳細資訊,請參閱 複製現有的 Git 存放庫

當您複製遠端存放庫時,Git 會將別名 origin 指派為您複製之遠端存放庫的 URL 縮寫。 為了方便起見,請為衍生自的存放庫新增名為 upstream 的另一個別名,稱為上游存放庫。 下列步驟說明如何新增 upstream 別名。

提示

為了方便起見,您可以在 Git 命令中使用 originupstream 別名,而不是其對應的 URL。

若要在 Visual Studio 中新增 upstream 別名,請遵循下列步驟:

  1. 從功能表列選擇 [工具 > 選項 ],以開啟 [ 選項 ] 視窗。 選取 [原始檔控制 Git 存放>庫] 設定 > [遠端],然後選擇 [新增] 以開啟 [新增遠端] 對話方塊。

    Visual Studio 2019 中 [原始檔控制] 功能表 [Git 存放庫] 設定 子功能表中 [新增] 按鈕的螢幕快照。

  2. 在 [ 新增遠端 ] 對話框中,新增名為 upstream 的新遠端,並輸入您分岔之存放庫的 Git 複製 URL 。 然後選擇 [ 儲存]。

    Visual Studio 2019 中 [新增遠端] 對話框的螢幕快照。

將本機變更推送至分支

當您分叉時,您會建立遠端存放庫的個人和獨立複本。 因此,您無法直接在本機複製的分支中 main 工作,然後將該工作推送至 main 分支的分支。 不過,通常最好使用 功能分支 來處理您的工作。 使用功能分支:

  • 您可以同時維護多個獨立工作流程。

  • 您可以讓其他人更輕鬆地瞭解您共用的工作,因為該工作會依分支組織成不同的工作流程。

典型的 Git 工作流程 包含下列步驟:

  1. 建立 本機功能或 Bug 修正分支。

  2. 在新分支中進行變更,並 認可 您的工作。 一般而言,在處理功能或 Bug 修正時,人員會進行多個認可。

  3. 將功能或 Bug 修正分支推送 至分支。 您的分支具有別名 origin

如需如何推送變更的資訊,請參閱 使用推送共享程序代碼。

建立並完成 PR

在 Azure Repos 中,若要合併至原始存放庫,您推送至分支的變更,您可以:

  1. 建立PR 以要求 檢閱 和核准您的變更。 當您開啟 PR 時,請將 PR 來源分支設定為分支中的功能或 Bugfix 分支。 PR 目標分支通常是 main 您分支之存放庫的分支。 該存放庫稱為上游存放庫,且具有 別名 upstream

    下列螢幕快照顯示 來源 存放庫和分支,以及 Azure Repos 中建立之 PR 的目標 存放庫和分支。

    Azure Repos 中 PR 來源和目標分支選項的螢幕快照。

    如需如何使用瀏覽器、Visual Studio 或 Azure DevOps CLI 建立 PR 的詳細資訊,請參閱 建立 PR

    重要

    具有上游存放庫讀取許可權的任何人都可以開啟其PR。 如果上游存放庫具有設定為在PR建立時執行的PR組建 管線 ,則組建將會在PR導入的變更上執行。

  2. 若要讓 PR 完成,所有必要的檢閱者都必須核准 PR 變更,而且必須符合所有目標分支原則。 在 PR 核准和 完成時,PR 來源分支中的變更會合併至 PR 目標分支。

如需如何建立和完成 GitHub PR 的詳細資訊,請參閱 建立提取要求合併提取要求

同步處理分支

PR 將分支的變更合併至上游存放庫的目標分支之後,您可以從 上游存放庫的目標分支提取 ,以使用變更和其他參與者所做的任何變更來更新對應的本機分支。 然後,您已準備好:

一般而言,上游存放庫的目標分支是 main。 如果您未直接編輯本機main分支(您在功能分支中工作),則從上游分支提取將會更新您的本機main分支upstream/main,而不會發生合併衝突。

下一步