完成、放棄或還原提取要求
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 |Visual Studio 2022
一旦所有必要的檢閱者核准提取要求(PR)且 PR 符合所有 分支原則 需求,您就可以將變更合併至目標分支並 完成 PR。 或者,如果您決定不繼續進行PR中的變更,則可以 放棄PR。
若要解決檢閱者的變更,以及回應和解決評論批注,請參閱 位址批注。
必要條件
您的項目必須啟用存放庫 。 如果 Repos 中樞和相關聯的頁面未顯示,請參閱開啟或關閉 Azure DevOps 服務以重新啟用 Repos。
若要完成PR,您必須是參與者安全組的成員,或具有PR所屬專案中的對應許可權。
若要參與PR,您必須是讀取者安全組的成員,或具有對應的許可權。
若要檢視或檢視 PR,您必須具有 Azure DevOps 專案的基本 或更高存取權。
如果您不是要參與的項目成員, 請新增 。
注意
針對公用專案,獲得 項目關係人 存取權的使用者具有 Azure Repos 的完整存取權。
- 您的項目必須啟用存放庫 。 如果 Repos 中樞和相關聯的頁面未顯示,請參閱開啟或關閉 Azure DevOps 服務以重新啟用 Repos。
- 若要完成PR,您必須是參與者安全組的成員,或具有您想要變更之專案中的對應許可權。
- 若要參與PR,您必須是讀取者安全組的成員,或具有對應的許可權。
- 若要檢視或檢視 PR,您必須是具有 基本 存取或更高許可權的 Azure DevOps 項目成員。 如果您不是項目成員, 請新增 。
檢查合併變更
當您完成PR時,Git會將新的 合併認可 新增至main分支的結尾。 此合併認可會連結主要分支和 PR 來源分支的先前歷程記錄。 若要查看預覽合併認可並檢查合併衝突,請選取PR 概觀頁面上右上方的 [更多選項] 功能表,然後選取 [檢視合併變更]。
如果您在建立PR之後變更了目標分支,請選取 [重新啟動合併 ] 以建立新的預覽合併認可,並更新合併變更差異檢視。
檢閱分支原則
Teams 可以設定 分支原則 ,要求受保護分支中的PR符合特定準則,才能合併PR。 您可以看到PR生效的分支原則、合併所需的分支原則,以及PR是否通過或失敗。
[PR 概觀 ] 索引標籤摘要說明針對 PR 傳遞或失敗的分支原則。 概觀只會列出失敗的原則,但您可以選取 [檢視 <n> 檢查] 來查看所有原則檢查。
在 [PR 概觀] 頁面上,分支原則需求會有圖示 。 選取需求旁的 [更多選項],然後選取 [檢視原則] 以移至 [項目設定] 中的分支原則頁面。
您可以在 Visual Studio 中開啟 PR,然後檢閱分支原則,如 [瀏覽器] 索引標籤中所述。
若要從 Visual Studio 開啟 PR,請在 Git 功能表中,選取<您的 Git 服務>>檢視提取要求,然後選取提取要求以開啟它。
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+\、Ctrl+M。
從 [ 首頁] 選取 [ 提取要求 ],以檢視由您開啟或指派給您的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 組態挑選,則為必要 專案。範例: 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 認可:合併與線性歷程記錄,將所有來源認可合併為目標上的單一認可,或 將PR合併 。 請注意,系統會為目標分支建立新的認可,而不會保留來源分支的認可歷程記錄。
- Rebase 和 fast-forward:將來源認可重新調整至目標並快速轉寄。
- 半線性合併:重新基底來源認可至目標,並建立雙父合併。
注意
會強制執行現有的原則。 例如,如果您的分支目前只有「壓縮合併」原則,則如果您想要使用另一個合併類型,則必須變更該原則。
選取下列任何完成後選項。 某些合併類型無法使用某些選項。
- 合併後完成相關聯的工作專案:完成任何連結的工作專案。
- 合併之後刪除<分支名稱>:合併後刪除PR的來源分支。
- 自定義合併認可訊息:新增自定義合併認可訊息。 如果您選取此選項,請更新 合併認可 訊息。
- 覆寫分支原則並啟用合併。 強制合併,即使PR不符合所有分支原則也一樣。 只有在您具有 豁免原則強制執行 許可權時,才能使用此選項。
選取 [完成合併]。
選取 右上方的 [完成 ],以完成 PR。 或者,選取 [完成] 按鈕旁的下拉式箭號,然後選取下列其中一個選項:
- 完成:立即完成PR,並將變更合併至目標分支。
- 設定自動完成:如果您有分支原則,請將PR設定為在符合所有必要的分支原則之後完成並合併。
- 放棄:關閉 PR 而不合併變更。
在 [完成提取要求] 畫面上,輸入合併認可訊息並更新PR描述。
選取下列任一選項:
合併 之後完成連結的工作專案,以完成任何連結的工作專案。
合併<branch name>
後刪除 ,以從 PR 刪除來源分支。
合併至壁球合併PR時,Squash 會變更。 請注意,系統會為目標分支建立新的認可,而不會保留來源分支的認可歷程記錄。
覆寫分支原則,並啟用合併 以強制分支合併,即使它不符合所有分支原則也一樣。 只有在您具有 豁免原則強制執行 許可權時,才能使用此選項。
注意
現有的原則仍會強制執行。 例如,如果您的分支目前只有「壁球合併」原則,您必須編輯該原則,才能使用其他合併類型。
選取 [完成合併]。
若要完成 PR,請在瀏覽器中開啟 PR,然後在 [概觀 ] 頁面上,選取 [ 完成 ] 或設定其他選項。
若要從 Visual Studio 開啟 PR,請在 Git 功能表中,選取<您的 Git 服務>>檢視提取要求,然後選取提取要求以開啟它。
若要從 Visual Studio 2019 Team Explorer 存取 PR:
從 Visual Studio 連線到您的專案。
選取 [檢視>Team Explorer] 以開啟 [Team Explorer]。 您也可以按 Ctrl+\、Ctrl+M。
從 [ 首頁] 選取 [ 提取要求 ],以檢視由您開啟或指派給您的PR清單。
若要在入口網站中開啟PR,請以滑鼠右鍵按兩下PR,然後選取 [在瀏覽器中開啟]。
若要完成PR並合併變更,請使用 az repos pr update 將 PR --status
更新為 completed
。
例如,若要完成PR #21,請使用:
az repos pr update --id 21 --status completed
設定完成選項
您可以在使用 az repos pr create
建立 PR 時設定 PR 完成選項,或使用 更新現有 PR az repos pr update
中的建立選項。
PR 完成選項包括:
bypass-policy {false, true}
:是否要略過任何必要原則,並在合併提取要求後完成提取要求。
bypass-policy-reason
:略過必要原則的原因。
delete-source-branch {false, true}
:在提取要求完成並合併之後,是否要刪除來源分支。
merge-commit-message
:自定義合併認可訊息。
squash {false, true}
:是否要將來源認可壓縮成合併的單一目標認可。
transition-work-items {false, true}
:P R 合併時是否要解析連結的工作專案。
若要設定完成選項並完成現有的PR,請搭配必要的id
參數使用az repos pr update
。
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 組態挑選,則為必要 專案。範例: https://dev.azure.com/MyOrganizationName/ 。 |
--squash |
合併至目標分支時,將來源分支中的認可壓縮。 接受的值: false 、 true 。 |
--status |
設定提取要求的新狀態。 接受的值:abandoned 、、。active completed |
--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完成期間重新進行重新處理時,有一些情況:
- 如果目標分支上的原則禁止使用重新基底策略,則需要 覆寫分支原則 許可權才能重新建置。
- 如果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,請在 Git 功能表中,選取<您的 Git 服務>>檢視提取要求,然後選取提取要求以開啟它。
若要從 Visual Studio 2019 Team Explorer 存取 PR:
從 Visual Studio 連線到您的專案。
選取 [檢視>Team Explorer] 以開啟 [Team Explorer]。 您也可以按 Ctrl+\、Ctrl+M。
從 [ 首頁] 選取 [ 提取要求 ],以檢視由您開啟或指派給您的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中每個認可的還原認可。
下一步
相關文章