

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 比较和合并中的分支 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://console.aws.amazon.com/codesuite/codemmit](https://console.aws.amazon.com/codesuite/codecommit/home) /home 打开 CodeCommit 控制台。

1. 在**存储库**中，选择要比较其中的分支的存储库的名称。

1. 在导航窗格中，选择**提交**，然后选择**比较提交**选项卡。

1. 在**目标**中，选择默认分支的名称。在**源**中，选择要与默认分支比较的分支。选择 **Compare**。

## 比较两个特定分支
<a name="how-to-compare-branches-two"></a>

使用 CodeCommit 控制台查看要比较的两个分支之间的差异。

1. 在 [https://console.aws.amazon.com/codesuite/codemmit](https://console.aws.amazon.com/codesuite/codecommit/home) /home 打开 CodeCommit 控制台。

1. 在**存储库**中，选择要比较其中的分支的存储库的名称。

1. 在导航窗格中，选择**提交**，然后选择**比较提交**选项卡。

1. 在**目标**和**源**中，选择要比较的两个分支，然后选择**比较**。要查看已更改文件的列表，请展开已更改文件列表。您可以通过并排 (拆分视图) 或内联 (统一视图) 方式查看文件中的更改。
**注意**  
如果您以 IAM 用户身份登录，则可配置并保存用于查看代码的首选项和其他控制台设置。有关更多信息，请参阅 [使用用户首选项](user-preferences.md)。  
![\[显示两个分支之间差别的简要视图。\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-compare-branches.png)

## 合并两个分支 (AWS CLI)
<a name="how-to-merge-branches-cli"></a>

您可以通过运行以下命令之一，使用可用的合并策略之一来合并 CodeCommit 存储库中的两个分支： AWS CLI 
+ 要使用快速转发合并策略合并两个分支，请运行 [**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)。

**注意**  
要将 AWS CLI 命令与一起使用 CodeCommit，请安装 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** 选项）。

    例如，要将名为的源分支合并*bugfix-1234*到名为的存储库*preprod*中名为的目标分支中*MyDemoRepo*：

   ```
   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-bug1234*与名为的存储库*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** 选项）。

   例如，要将名为的源分支*main*与名为的存储库*bugfix-1234*中名为的目标分支合并，名为*MyDemoRepo*：

   ```
   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"
   }
   ```