

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 合併提取請求
<a name="pull-requests-merge"></a>

在檢閱您的程式碼並核准所有必要的檢閱者之後，您可以使用支援的合併策略，例如快轉，在 CodeCatalyst 主控台中合併提取請求。並非所有 CodeCatalyst 主控台支援的合併策略都可以作為所有提取請求的選擇。CodeCatalyst 會評估合併，而且只允許您在主控台中可用的合併策略之間進行選擇，並且能夠將來源分支合併到目的地分支。您也可以在本機電腦或開發環境上執行 **git merge**命令，將來源分支合併到目的地分支，以將提取請求與您選擇的 Git 合併策略合併。然後，您可以將目的地分支中的這些變更推送到 CodeCatalyst 中的來源儲存庫。

**注意**  
在 Git 中合併分支並推送變更不會自動關閉提取請求。

如果您有專案管理員角色，您也可以選擇合併尚未符合核准和核准規則所有要求的提取請求。

## 合併提取請求 （主控台）
<a name="pull-requests-merge-console"></a>

如果來源和目的地分支之間沒有合併衝突，而且所有必要的檢閱者都已核准提取請求，您可以在 CodeCatalyst 主控台中合併提取請求。如果有衝突，或合併無法完成，合併按鈕會處於非作用中狀態，並顯示**不可合併**標籤。在這種情況下，您必須取得任何必要核准者的核准、視需要在本機解決衝突，並推送這些變更，才能合併。合併提取請求會自動傳送電子郵件給提取請求的建立者，以及任何必要或選用的檢閱者。它不會自動關閉或變更與提取請求連結的任何問題的狀態。

**提示**  
您可以設定在設定檔中接收電子郵件的提取請求事件。如需詳細資訊，請參閱[從 CodeCatalyst 傳送 Slack 和電子郵件通知](notifications-manage.md)。<a name="pull-requests-merge-console"></a>

**合併提取請求**

1. 導覽至您要合併提取請求的專案。

1. 在專案頁面的**開啟提取請求**下，選擇您要合併的提取請求。如果您沒有看到提取請求，請選擇**檢視所有提取請求**，然後從清單中選擇它。或者，在導覽窗格中，選擇**程式碼**，選擇**提取請求**，然後選擇您要合併的提取請求。選擇 **Merge (合併)**。

1. 從提取請求的可用合併策略中選擇。或者，選取或取消選取在合併提取請求後刪除來源分支的選項，然後選擇**合併**。
**注意**  
如果**合併**按鈕處於非作用中狀態，或者您看到**不可合併**標籤，則所需的檢閱者尚未核准提取請求，或者提取請求無法在 CodeCatalyst 主控台中合併。尚未核准提取請求的檢閱者會以**概觀**中**提取請求詳細資訊**區域中的時鐘圖示表示。如果所有必要的檢閱者都已核准提取請求，但**合併**按鈕仍處於非作用中狀態，則可能會發生合併衝突。選擇底線**的不可合併**標籤，以查看為何無法合併提取請求的更多詳細資訊。您可以在開發環境或 CodeCatalyst 主控台中解決目的地分支的合併衝突，然後合併提取請求，或者您可以解決衝突並在本機合併，然後將包含合併的遞交推送至 CodeCatalyst 中的來源分支。如需詳細資訊，請參閱 [合併提取請求 (Git)](#pull-requests-merge-git)和您的 Git 文件。

## 覆寫合併需求
<a name="pull-requests-merge-override"></a>

如果您有**專案管理員**角色，您可以選擇合併尚未符合必要核准和核准規則的所有要求的提取請求。這稱為覆寫提取請求的要求。如果必要的檢閱者無法使用，或者出現將特定提取請求合併到無法快速滿足核准規則的分支的緊急需求，您可以選擇這樣做。<a name="pull-requests-merge-console"></a>

**合併提取請求**

1. 在您要覆寫需求並合併的提取請求中，選擇**合併**按鈕旁的下拉式箭頭。選擇**覆寫核准需求**。

1. 在**覆寫原因**中，提供合併此提取請求的原因詳細資訊，而不滿足核准規則和必要的檢閱者要求。雖然這是選用的，但強烈建議這樣做。

1. 選擇性地選擇合併策略，或接受預設值。您也可以選擇使用更多詳細資訊來更新自動產生的遞交訊息。

1. 選取或取消選取合併時刪除來源分支的選項。我們建議您在覆寫合併提取請求的需求時保留來源分支，直到您有機會與其他團隊成員檢閱決策為止。

1. 選擇 **Merge (合併)**。

## 合併提取請求 (Git)
<a name="pull-requests-merge-git"></a>

Git 支援許多合併和管理分支的選項。下列命令是您可以使用的一些選項。如需詳細資訊，請參閱 [Git 網站上的](https://git-scm.com/doc)可用文件。合併並推送變更後，請手動關閉提取請求。如需詳細資訊，請參閱[關閉提取請求](pull-requests-close.md)。


**合併分支的常見 Git 命令**  

|  |  | 
| --- |--- |
|  將本機儲存庫中的來源分支變更合併至本機儲存庫中的目的地分支。  |  `git checkout destination-branch-name` `git merge source-branch-name`  | 
|  將來源分支合併到目的地分支，指定快速向前合併。這會合併分支，並將目的地分支指標移至來源分支的頂端。  |  `git checkout destination-branch-name` `git merge --ff-only source-branch-name`  | 
|  將來源分支合併到目的地分支，指定小隊合併。這會將來源分支的所有遞交合併為目的地分支中的單一合併遞交。  |  `git checkout destination-branch-name` `git merge --squash source-branch-name`  | 
|  將來源分支合併到目的地分支，指定三向合併。這會建立合併遞交，並將個別遞交從來源分支新增至目的地分支。  |  `git checkout destination-branch-name` `git merge --no-ff source-branch-name`  | 
|  刪除本機儲存庫中的來源分支。在合併至目的地分支並將變更推送至來源儲存庫之後，這對於做為本機儲存庫的清除很有用。  |  `git branch -d source-branch-name`  | 
|  使用本機儲存庫為遠端儲存庫指定的別名，刪除遠端儲存庫中的來源分支 (CodeCatalyst 中的來源儲存庫）。(注意冒號 (`:`) 的使用方式。) 或者，指定 `--delete`做為 命令的一部分。  |  `git push remote-name :source-branch-name` `git push remote-name --delete source-branch-name`  | 