

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

# 比較和合併 中的分支 AWS CodeCommit
<a name="how-to-compare-branches"></a>

您可以使用 CodeCommit 主控台來比較 CodeCommit 儲存庫中的分支。比較分支有助於快速檢視某個分支和預設分支的差異，或檢視任兩個分支間的差異。

**Topics**
+ [比較分支與預設分支](#how-to-compare-branches-default)
+ [比較兩個特定的分支](#how-to-compare-branches-two)
+ [合併兩個分支 (AWS CLI)](#how-to-merge-branches-cli)

## 比較分支與預設分支
<a name="how-to-compare-branches-default"></a>

使用 CodeCommit 主控台快速檢視 分支與儲存庫預設分支之間的差異。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要比較分支所在儲存庫的名稱。

1. 在導覽窗格中，選擇 **Commits (遞交)**，然後選擇 **Compare commits (比較遞交)** 索引標籤。

1. 在 **Destination (目的地)** 中，選擇預設分支的名稱。在 **Source (來源)** 中，選擇您想要與預設分支比較的分支。選擇 **Compare (比較)**。

## 比較兩個特定的分支
<a name="how-to-compare-branches-two"></a>

使用 CodeCommit 主控台檢視您要比較的兩個分支之間的差異。

1. 在 https：//[https://console.aws.amazon.com/codesuite/codecommit/home](https://console.aws.amazon.com/codesuite/codecommit/home) 開啟 CodeCommit 主控台。

1. 在 **Repositories (儲存庫)** 中，選擇您要比較分支所在儲存庫的名稱。

1. 在導覽窗格中，選擇 **Commits (遞交)**，然後選擇 **Compare commits (比較遞交)** 索引標籤。

1. 在 **Destination (目的地)** 和 **Source (來源)** 中，選擇要比較的兩個分支，然後選擇 **Compare (比較)**。若要檢視變更的檔案清單，請展開變更的檔案清單。您可以透過左右並排 (分割檢視) 或內嵌 (統一檢視) 來檢視檔案中的變更。
**注意**  
如果您以 IAM 使用者身分登入，則可以設定和儲存您的偏好設定，以檢視程式碼和其他主控台設定。如需詳細資訊，請參閱[使用使用者偏好設定](user-preferences.md)。  
![兩個分支之間差異的縮寫檢視。](http://docs.aws.amazon.com/zh_tw/codecommit/latest/userguide/images/codecommit-compare-branches.png)

## 合併兩個分支 (AWS CLI)
<a name="how-to-merge-branches-cli"></a>

您可以使用其中一個可用的合併策略，透過執行下列其中一個命令， AWS CLI 在 CodeCommit 儲存庫中合併兩個分支：
+ 若要使用向前快轉合併策略來合併兩個分支，請執行 [**merge-branches-by-fast-forward**](#merge-branches-by-fast-forward) 命令。
+ 若要使用 squash 合併策略來合併兩個分支，請執行 [**merge-branches-by-squash**](#merge-branches-by-squash) 命令。
+ 若要使用三向合併策略來合併兩個分支，請執行 [**merge-branches-by-three-way**](#merge-branches-by-three-way) 命令。

您也可以執行 **create-unreferenced-merge-commit** 命令來測試合併。如需詳細資訊，請參閱[解決提取請求中的衝突](how-to-resolve-conflict-pull-request.md#create-unreferenced-merge-commit)。

**注意**  
若要搭配 CodeCommit 使用 AWS CLI 命令，請安裝 AWS CLI。如需詳細資訊，請參閱[命令列參考](cmd-ref.md)。

**使用 在 CodeCommit AWS CLI 儲存庫中合併兩個分支**

1. <a name="merge-branches-by-fast-forward"></a>若要使用向前快轉合併策略來合併兩個分支，請執行 **merge-branches-by-fast-forward** 命令，並指定：
   + 包含您要合併之變更的來源分支名稱 (使用 **--source-commit-specifier** 選項)。
   + 您要合併變更的目的地分支名稱 (使用 **--destination-commit-specifier** 選項)。
   + 儲存庫的名稱 (使用 **--repository-name** 選項)。

    例如，若要在名為 {{MyDemoRepo}} 的儲存庫中，將名為 {{bugfix-1234}} 的來源分支合併至名為 {{preprod}} 的目的地分支：

   ```
   aws codecommit merge-branches-by-fast-forward --source-commit-specifier {{bugfix-bug1234}} --destination-commit-specifier {{preprod}} --repository-name {{MyDemoRepo}}
   ```

   如果此命令成功執行，您會看到類似如下的輸出產生：

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```

1. <a name="merge-branches-by-squash"></a>若要使用 squash 合併策略來合併兩個分支，請執行 **merge-branches-by-squash** 命令，指定：
   + 包含您要合併之變更的來源分支名稱 (使用 **--source-commit-specifier** 選項)。
   + 您要合併變更的目的地分支名稱 (使用 **--destination-commit-specifier** 選項)。
   + 儲存庫的名稱 (使用 **--repository-name** 選項)。
   + 要包含的遞交訊息 (使用 **--commit-message** 選項)。
   + 用於遞交的名稱 (使用 **--name** 選項)。
   + 用於遞交的電子郵件地址 (使用 **--email** 選項)。

   例如，若要將名為 {{bugfix-1234}} 的來源分支合併到名為 {{bugfix-quarterly}} 的目的地分支 (位於名為 {{MyDemoRepo}} 的儲存庫中)：

   ```
   aws codecommit merge-branches-by-squash --source-commit-specifier {{bugfix-bug1234}} --destination-commit-specifier {{bugfix-quarterly}} --author-name "{{Maria Garcia}}" --email "{{maria_garcia@example.com}}" --commit-message "{{Merging in fix branches to prepare for a general patch.}}" --repository-name {{MyDemoRepo}}
   ```

   如果此命令成功執行，您會看到類似如下的輸出產生：

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```

1. <a name="merge-branches-by-three-way"></a>若要使用三向合併策略來合併兩個分支，請執行 **merge-branches-by-three-way** 命令，並指定：
   + 包含您要合併之變更的來源分支名稱 (使用 **--source-commit-specifier** 選項)。
   + 您要合併變更的目的地分支名稱 (使用 **--destination-commit-specifier** 選項)。
   + 儲存庫的名稱 (使用 **--repository-name** 選項)。
   + 要包含的遞交訊息 (使用 **--commit-message** 選項)。
   + 用於遞交的名稱 (使用 **--name** 選項)。
   + 用於遞交的電子郵件地址 (使用 **--email** 選項)。

   例如，若要在名為 {{MyDemoRepo}} 的儲存庫中合併名為 {{main}} 的來源分支與名為 {{bugfix-1234}} 的目的地分支：

   ```
   aws codecommit merge-branches-by-three-way --source-commit-specifier {{main}} --destination-commit-specifier {{bugfix-bug1234}} --author-name "{{Jorge Souza}}" --email "{{jorge_souza@example.com}}" --commit-message "{{Merging changes from main to bugfix branch before additional testing.}}"  --repository-name {{MyDemoRepo}}
   ```

   如果此命令成功執行，您會看到類似如下的輸出產生：

   ```
   {
       "commitId": "4f178133EXAMPLE",
       "treeId": "389765daEXAMPLE"
   }
   ```