Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
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會將新的 合併認可 新增至main分支的結尾。 此合併提交會連結主要分支和 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+\、+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 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,然後在 [概觀 ] 頁面上,選取 [ 完成 ] 或設定其他選項。
若要從 Visual Studio 開啟 PR,請在 >檢視提取要求,然後選取提取要求以開啟它。
若要從 Visual Studio 2019 Team Explorer 存取 PR:
從 Visual Studio 連線到您的專案。
選取 檢視>Team Explorer 以開啟 Team Explorer。 您也可以按 Ctrl+\、+M。
從首頁選取拉取請求,以檢視由您開啟或指派給您的拉取請求清單。
若要在入口網站中開啟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 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}
: 是否要在 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 組態挑選,則為必要。範例: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 時進行 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+\、+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,然後選取右上方的 [重新啟用]。
在網頁入口中建立 Pull Request。 在 [概觀] 頁面上,選取 [ 放棄]。
若要在入口網站中開啟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中每個認可的還原認可。
下一步
相關文章