Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Visual Studio 2019 |Visual Studio 2022
一旦所有必要的檢閱者核准提取要求(PR)且 PR 符合所有 分支原則 需求,您就可以將變更合併至目標分支並 完成 PR。 或者,如果您決定不繼續進行PR中的變更,則可以 放棄PR。
若要解決檢閱者的變更,以及回應和解決評論批注,請參閱 位址批注。
必要條件
| 類別 |
需求 |
|
專案存取 |
專案的成員。 |
|
許可 |
- 在私人項目中檢視程式碼:至少 基本 權限。 - 複製或貢獻私人專案中的程式碼:作為 貢獻者 安全群組的成員或在專案中具有相應的許可權。 - 設定分支或存放庫許可權:管理分支或存放庫的許可權 許可權。 - 變更預設分支:編輯原則 存放庫的許可權。 - 匯入存放庫:專案管理員成員 安全組或 Git 專案層級 建立存放庫 許可權設定為 允許。 如需詳細資訊,請參閱 設定 Git 存放庫許可權。 |
|
服務 |
啟用 Repos。 |
|
工具 |
選擇性。 使用 az repos 命令:Azure DevOps CLI。 |
注意
在公用專案中,具有 項目關係人 存取權的使用者具有 Azure Repos 的完整存取權,包括檢視、複製及參與程式代碼。
| 類別 |
需求 |
|
專案存取 |
專案的成員。 |
|
許可 |
- 查看程式碼:至少 基本 權限。 - 複製程式碼或貢獻程式碼:屬於 參與者安全組 的成員或具有專案中的對應許可權。 |
|
服務 |
啟用 Repos。 |
如需許可權和存取的詳細資訊,請參閱 預設 Git 存放庫和分支許可權 和 關於存取層級。
檢查合併變更
當您完成 PR 時,Git 會將新的 合併提交 新增至主要分支的結尾。 此合併提交會連結主要分支和 PR 來源分支的先前歷史紀錄。 若要查看預覽合併認可並檢查合併衝突,請在 PR 概觀頁面的右上方選取更多選項功能表,然後選取檢視合併變更。
如果您在建立 PR 之後更改了目標分支,請選取 重新啟動合併,以建立新的預覽合併提交並更新合併變更差異檢視。
審查分支原則
Teams 可以設定 分支原則 ,要求受保護分支中的 PR 必須符合特定準則,才能合併 PR。 您可以看到正在生效的PR分支政策、這些政策是否為合併所需,以及PR是否通過或未通過。
PR 概觀 標籤摘要說明 PR 的分支政策是否通過或失敗。 總覽只會列出失敗的政策,但您可以選取 [查看 <n> 檢查] 來查看所有政策檢查。
在 [PR 概觀] 頁面上,分支政策需求會標示一個圖示
。 選取需求旁的 [更多選項],然後選取 [檢視原則] 以移至 [項目設定] 中的分支原則頁面。
您可以在 Visual Studio 中開啟 PR,然後檢閱分支原則,如 [瀏覽器] 索引標籤中所述。
若要從 Visual Studio 開啟 PR,請在 <,然後選取提取要求以開啟它。
Visual Studio 2019 16.8 版和更新版本提供 Git 版本控制體驗,同時維護 Team Explorer Git 使用者介面。 若要使用Team Explorer,請在功能表列取消選取工具>選項>預覽功能>新增 Git 使用者體驗。 您可以從任一界面操作 Git 功能。
若要從 Visual Studio Team Explorer 存取 PR:
從 Visual Studio 連線到您的專案。
選取 檢視>Team Explorer 以開啟 Team Explorer。 您也可以按 Ctrl+\、+
從 [ 首頁] 選取 [ 提取要求 ],以檢視由您開啟或指派給您的PR清單。
若要在入口網站中開啟PR並檢視生效的原則,請以滑鼠右鍵按兩下PR,然後選取 [在瀏覽器中開啟]。
若要查看 PR 生效的所有分支原則,請使用 az repos pr policy list 搭配必要的 id 參數。
az repos pr policy list --id
[--detect {false, true}]
[--org]
[--query-examples]
[--skip]
[--subscription]
[--top]
參數
| 參數 |
描述 |
--id |
拉取請求的識別碼。
必要。 |
--detect |
自動偵測組織。 接受的值: false、 true。 |
--org
--organization |
Azure DevOps 組織 URL。 您可以使用az devops configure -d organization=<ORG_URL>來設定預設組織。
如果未配置為預設或未透過 git config 選取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
--query-examples |
建議的 JMESPath 字串。 您可以複製其中一個查詢,並在參數後面 --query 貼上雙引號來查看結果。 您可以新增一或多個位置關鍵詞,因此建議會以這些關鍵詞為基礎。 |
--skip |
要略過的原則數目。 |
--subscription |
訂用帳戶的名稱或識別碼。 您可以使用 az account set -s <NAME_OR_ID> 來設定預設的訂閱帳戶。 |
--top |
要列出的原則數目上限。 |
範例
例如,若要查看在PR#28上生效的原則,請執行下列命令:
az repos pr policy list --id 28 --output table
Evaluation ID Policy Blocking Status Expired Build ID
------------------------------------ --------------------------------------------- ---------- -------- --------- ----------
84e7ca6d-0b42-4819-9f62-f41df5e319f3 Minimum number of reviewers (1) True Approved
1ba061d8-9e9f-401b-ab61-e2ed1c200aba Required reviewers (1) True
37620a4b-adc4-483d-9ca2-3f4e6ffe2990 Comment requirements False Approved
34b7cae8-812a-4c14-9229-f71a0e662e8b Required reviewers (1) ([Fabrikam Fiber]\Web) False
a6e4380e-9f38-4aa5-863c-0fc496027362 Work item linking False Rejected
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
完成提取要求
您解決任何合併衝突,且 PR 符合所有分支政策並獲得所有必要的審核後,便可完成 PR。
選擇右上方的 [完成] 以完成 PR。 或選取 [完成] 按鈕旁的下拉式箭號,然後選取其中一個選項。
-
完成:立即完成PR,並將變更合併至目標分支。
-
設定自動完成:配置PR以在符合所有必要的分支原則之後完成並合併。
-
標示為草稿:將PR傳回草稿狀態,並移除所有投票。
-
放棄:關閉 PR 而不合併變更。
在 [完成提取要求] 窗格中的 [合併類型] 底下,選取其中一個合併選項。
-
合併(無快轉):合併具有非線性歷史的提交,保留所有提交記錄。
-
Squash 提交:以線性歷史合併,將所有來源提交合併為目標上的單一提交,或者「Squash」合併 PR。 請注意,系統會為目標分支建立新的認可,而不會保留來源分支的認可歷程記錄。
-
Rebase 和 fast-forward:將來源認可重新調整至目標並快速轉寄。
-
半線性合併:將來源提交重新定位到目標,並建立雙親合併。
注意
會強制執行現有的原則。 例如,如果您的分支目前有「只允許壓縮併入」的政策,當您想要使用其他合併類型時,必須修改該政策。
選取下列任何完成後選項。 某些選項無法用於某些合併類型。
-
合併後完成相關聯的工作專案:完成任何連結的工作專案。
-
<之後刪除>分支名稱:合併後刪除PR的來源分支。
-
自定義合併認可訊息:新增自定義合併認可訊息。 如果您選取此選項,請更新 合併認可 訊息。
-
覆蓋分支策略並啟用合併。 即使 PR 不符合所有分支策略,也要強制合併。 只有在您具有 豁免原則強制執行 許可權時,才能使用此選項。
請選擇「完成合併」。
選擇右上方的 [完成] 以完成 PR。 或者,選取 [完成] 按鈕旁的下拉式箭號,然後選取下列其中一個選項:
-
完成:立即完成PR,並將變更合併至目標分支。
-
設定自動完成:如果您有分支原則,請將PR設定為在符合所有必要的分支原則之後完成並合併。
-
放棄:關閉 PR 而不合併變更。
在 [完成拉取請求] 畫面上,輸入合併提交訊息並更新拉取請求描述。
選取下列任一選項:
合併 之後完成連結的工作專案,以完成任何連結的工作專案。
在合併後刪除<branch name>,以從 PR 中刪除來源分支。
合併至壁球合併PR時,Squash 會變更。 請注意,系統會為目標分支建立新的認可,而不會保留來源分支的認可歷程記錄。
覆寫分支原則並啟用合併,即使該分支未滿足所有分支原則,也可強制其合併。 只有在您具有 豁免原則強制執行 許可權時,才能使用此選項。
注意
現有的原則仍會強制執行。 例如,如果您的分支目前設有「僅限壓縮合併」政策,您必須編輯該政策,才能使用其他合併類型。
請選擇「完成合併」。
當您完成合併時,任何 連結的工作專案 都會自動更新以顯示 PR 已完成。
若要完成 PR,請在瀏覽器中開啟 PR,然後在 [概觀 ] 頁面上,選取 [ 完成 ] 或設定其他選項。
若要從 Visual Studio 開啟 PR,請在 <,然後選取提取要求以開啟它。
若要從 Visual Studio 2019 Team Explorer 存取 PR:
從 Visual Studio 連線到您的專案。
選取 檢視>Team Explorer 以開啟 Team Explorer。 您也可以按 Ctrl+\、+
從 [ 首頁] 選取 [ 提取要求 ],以檢視由您開啟或指派給您的PR清單。
若要在入口網站中開啟PR,請以滑鼠右鍵按兩下PR,然後選取 [在瀏覽器中開啟]。
若要完成PR並合併變更,請使用 az repos pr update 將 PR --status 更新為 completed。
例如,若要完成PR #21,請使用:
az repos pr update --id 21 --status completed
設定完成選項
您可以在建立 PR 時使用 設定 PR 完成選項,或在現有 PR 中使用 az repos pr create 更新建立選項。
PR 完成選項包括:
-
bypass-policy {false, true}:是否要跳過任何必要的原則,並在可以合併時完成拉取請求。
-
bypass-policy-reason:略過必要原則的原因。
-
delete-source-branch {false, true}:在提取要求完成並合併之後,是否要刪除來源分支。
-
merge-commit-message:自訂合併提交訊息。
-
squash {false, true}:是否要將來源提交壓縮成合併的單一目標提交。
-
transition-work-items {false, true}: 是否要在 PR 合併時解析已連結的工作專案。
若要設定完成選項並完成現有的PR,請使用az repos pr update並搭配必要的id參數。
az repos pr update --id
[--auto-complete {false, true}]
[--bypass-policy {false, true}]
[--bypass-policy-reason]
[--delete-source-branch {false, true}]
[--description]
[--detect {false, true}]
[--draft {false, true}]
[--merge-commit-message]
[--org]
[--squash {false, true}]
[--status {abandoned, active, completed}]
[--subscription]
[--title]
[--transition-work-items {false, true}]
參數
| 參數 |
描述 |
--id |
拉取請求的識別碼。
必要。 |
--auto-complete |
設定拉取請求,使其在所有政策通過且源分支可以合併至目標分支時自動完成。 接受的值: false、 true。 |
--bypass-policy |
略過任何必要的政策,並在可以合併時完成提取請求。 接受的值: false、 true。 |
--bypass-policy-reason |
略過必要原則的原因。 |
--delete-source-branch |
提取要求完成並合併至目標分支之後,請刪除來源分支。 接受的值: false、 true。 |
--description -d |
提取要求的新描述。 可以包含 Markdown。 每個值都是新行。 例如: --description "First Line" "Second Line" 。 |
--detect |
自動偵測組織。 接受的值: false、 true。 |
--draft |
將 PR 轉換為草稿模式或發佈。 接受的值: false、 true。 |
--merge-commit-message |
合併提交時要顯示的訊息。 |
--org
--organization |
Azure DevOps 組織 URL。 您可以使用az devops configure -d organization=<ORG_URL>來設定預設組織。
如果未配置為預設或未透過 git config 選取,則為必要。範例:https://dev.azure.com/MyOrganizationName/。 |
--squash |
在合併至目標分支時,將來源分支中的提交壓縮。 接受的值: false、 true。 |
--status |
設定提取要求的新狀態。 接受的值:abandoned、、。activecompleted |
--subscription |
訂用帳戶的名稱或識別碼。 您可以使用 az account set -s <NAME_OR_ID> 來設定預設的訂閱帳戶。 |
--title |
提取要求的新標題。 |
--transition-work-items |
將連結至提取要求的任何工作項目轉換為下一個邏輯狀態,例如 Resolved。 接受的值: false、 true。 |
範例
下列範例會完成PR #21、刪除其來源分支、解決其連結的工作專案,以及新增合併提交訊息:
az repos pr update --id 21 --status completed --delete-source-branch true --transition-work-items true --merge-commit-message "This update is complete."
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
完成 PR 時變基
在完成 PR 時進行 rebase 存在無法進行的情況:
- 如果目標分支的原則禁止使用變基策略,則需要覆寫分支原則許可權才能進行變基。
- 如果 PR 來源分支有策略,則無法重新設置基底。 重新處理會修改來源分支,而不需經過原則核准程式。
- 如果您使用合併衝突延伸模組來解決合併衝突,則無法重新設定基底。 在個別調整所有 PR 提交的基礎時,套用到三向合併的衝突解決方法很少成功或有效。
在這些情況下,您仍然可以在本機重新建置分支,然後在完成PR時推送上游或將變更壓縮合併。
多個合併基礎問題
在某些情況下,PR 可能會有超過一個真實的合併基礎,這樣的情況可能會引發安全性問題。 如果 PR 中的檔案在合併基底之間有不同的版本,就會發生多個合併基底警告。 如需詳細資訊和解決方案,請參閱 多個合併基底。
解決合併衝突
分支中的檔案變更可能會與其他分支中的變更衝突。 當不清楚如何合併變更時,Git 會顯示PR概觀頁面上衝突的檔案。 您必須先解決PR分支與目標分支之間的任何 合併衝突 ,才能合併PR或將PR設定為自動完成。 如需解決合併衝突的指示,請參閱 解決合併衝突。
將拉取請求設定為自動完成
從 [完成] 下拉式清單中選取 [設定自動完成],以便在所有分支策略的條件符合後,立即完成並合併 PR 變更。 PR 完成時,您會收到電子郵件通知。 如果有衝突或錯誤阻止 PR 完成,電子郵件會通知您此問題。
注意
當您有分支原則時,Azure Repos 和 TFS 2017 及更高版本提供 設置自動完成 選項。 如果您沒有看到 [設定自動完成],則沒有任何分支原則。 如需詳細資訊,請參閱 分支原則。
預設情況下,設定為自動合併的 PR 只會等候必要政策。 在 [ 啟用自動完成 ] 面板中,您也可以選擇等候選擇性原則。
從 TFS 2018 Update 2 開始,PR 概觀 頁面會顯示 PR 正在等待的待完成政策準則清單。 如果您在 [啟用自動完成] 面板中將原則設定為必要,您可以在 [概觀] 頁面上將其設定回選擇性。
選取 [ 取消自動完成 ] 以關閉自動完成。
設定為自動完成的 PR 會在提取要求頁面上顯示 自動完成 徽章。
在入口網站中開啟提取要求。 在 概觀 頁面上,選取 設定自動完成。
若要從 Visual Studio 開啟 PR,請在 <,然後選取提取要求以開啟它。
若要從 Visual Studio 2019 Team Explorer 存取 PR:
從 Visual Studio 連線到您的專案。
選取 檢視>Team Explorer 以開啟 Team Explorer。 您也可以按 Ctrl+\、+
從 [ 首頁] 選取 [ 提取要求 ],以檢視由您開啟或指派給您的PR清單。
若要在入口網站中開啟PR並檢視生效的原則,請以滑鼠右鍵按兩下PR,然後選取 [在瀏覽器中開啟]。
將自動完成設為在 PR 通過所有必要的批准和分支政策後自動完成。 您可以在建立PR時設定自動完成,或更新現有的PR。
- 若要在 PR 建立時設定自動完成,請使用
az repos pr create --auto-complete true。
- 若要將現有的 PR 更新為自動完成,請使用
az repos pr update --id <PR Id> --auto-complete true。
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
放棄或重新啟用提取要求
若要放棄變更和 PR 而不合併,請從 [放棄] 按鈕的 [完成] 下拉式清單中選取。 您仍然可以檢視已放棄的PR,而且它仍會連結到工作專案。
若要隨時重新啟用已放棄的 PR,請從 [已放棄] 標籤頁在 提取要求 檢視中開啟 PR,然後選取右上方的 [重新啟用]。
在入口網站中開啟提取要求。 在 [概觀] 頁面上,選取 [ 放棄]。
若要在入口網站中開啟PR,請使用完成提取要求中的程式。
若要放棄 PR 而不合併變更,請使用 az repos pr update --id <PR Id> –-status abandoned。 您可以將狀態設定為 active,以重新啟用PR。
Azure DevOps Server 不支援 Azure DevOps CLI 命令。
還原已完成的提取要求
要撤銷 PR 中的變更,請按照以下步驟進行。 如需詳細資訊,請參閱 復原變更。
開啟已完成的 PR,然後選取 [ 還原]。 此動作會建立一個新的分支,其中包含撤銷您儲存庫中現有目標分支的PR之變更。
在 還原拉取請求 面板中:
- 在 [目標分支] 底下,選取您要復原 PR 變更的分支。
- 在 需要的主題分支名稱 底下,您可以視需要變更還原 PR 分支名稱。
- 選擇 還原。
在 [ 新增提取要求 ] 畫面上,選取 [ 建立]。
合併新的 PR 以完成恢復。
注意
在這次還原操作中建立的分支包含一個提交,該提交還原了原始PR的所有檔案變更。 分支不包含原始 PR 中每個提交的還原提交。
下一步
相關文章