

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

# 使用 AWS CodeCommit 存储库中的分支
<a name="branches"></a>

什么是分支？ 在 Git 中，分支是指向提交的指针或引用。在开发中，它们是组织工作的便捷方式。您可以使用分支来分离新的或不同版本文件的工作，而不影响其他分支中的工作。您可以使用分支开发新功能、从特定提交存储项目的特定版本等。当您创建第一个提交时，系统将为您创建一个*默认分支*。此默认分支在用户克隆存储库时被用作本地存储库的基本或默认分支。此默认分支的名称因创建第一个提交的方式而异。如果您使用 CodeCommit 控制台将第一个文件添加到存储库中 AWS CLI，则该 SDKs默认分支的名称为 *main*。这是本指南的示例中使用的默认分支名称。如果您使用 Git 客户端推送第一个提交，则默认分支的名称就是 Git 客户端指定为其默认名称的名称。请考虑将 Git 客户端配置为使用 *main* 作为初始分支的名称。

在中 CodeCommit，您可以更改存储库的默认分支。您还可以创建和删除分支并查看有关分支的详细信息。您可以快速比较某一分支与默认分支之间 (或任意两个分支之间) 的区别。要查看存储库中分支和合并的历史记录，可以使用[提交可视化工具](how-to-view-commit-details.md#how-to-view-commit-details-console-visualizer)，如下图所示。

![\[存储库中的分支视图\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-cv-complex1.png)


有关使用存储库其他方面的信息 CodeCommit，请参阅[使用存储库](repositories.md)、[使用文件](files.md)、[使用拉取请求](pull-requests.md)[使用提交](commits.md)、和[使用用户首选项](user-preferences.md)。

**Topics**
+ [在中创建分支 AWS CodeCommit](how-to-create-branch.md)
+ [限制推送和合并到中的分支 AWS CodeCommit](how-to-conditional-branch.md)
+ [在中查看分支机构详情 AWS CodeCommit](how-to-view-branch-details.md)
+ [比较和合并中的分支 AWS CodeCommit](how-to-compare-branches.md)
+ [在中更改分支设置 AWS CodeCommit](how-to-change-branch.md)
+ [删除中的分支 AWS CodeCommit](how-to-delete-branch.md)

# 在中创建分支 AWS CodeCommit
<a name="how-to-create-branch"></a>

您可以使用 CodeCommit 控制台或为您的存储库创建分支。 AWS CLI 这是分离新的或不同版本文件的工作而不影响默认分支中的工作的快速方式。在 CodeCommit 控制台中创建分支后，必须将该更改拉到本地存储库。或者，你可以在本地创建一个分支，然后使用连接到存储库的本地 CodeCommit 存储库中的 Git 来推送该更改。

**Topics**
+ [创建分支（控制台）](#how-to-create-branch-console)
+ [创建分支 (Git)](#how-to-create-branch-git)
+ [创建分支 (AWS CLI)](#how-to-create-branch-cli)

## 创建分支（控制台）
<a name="how-to-create-branch-console"></a>

您可以使用 CodeCommit 控制台在 CodeCommit 存储库中创建分支。当用户下次从该存储库中拉取更改时，将看到新分支。

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

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

1. 在导航窗格中，选择 **Branches**。

1. 选择**创建分支**。  
![\[在 CodeCommit 控制台中创建分支。\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-branches-create.png)

   在**分支名称**中，输入分支的名称。在**分支来源**中，从列表中选择分支或标签，或粘贴提交 ID。选择**创建分支**。

## 创建分支 (Git)
<a name="how-to-create-branch-git"></a>

按照以下步骤使用本地存储库中的 Git 在本地存储库中创建分支，然后将该分支推送到存储库。 CodeCommit 

编写这些步骤时假设您已经将本地存储库连接到 CodeCommit 存储库。有关说明，请参阅[连接存储库](how-to-connect.md)。

1. 通过运行**git checkout -b *new-branch-name***命令在本地存储库中创建一个分支，其中*new-branch-name*是新分支的名称。

   例如，下面的命令在本地存储库中创建一个名为 `MyNewBranch` 的分支：

   ```
   git checkout -b MyNewBranch
   ```

1. 要将新分支从本地存储库推送到 CodeCommit 存储库，请运行**git push**命令，同时指定***remote-name***和。***new-branch-name***

   例如，要将本地存储库中名为的新分支推送`MyNewBranch`到带有昵称`origin`的 CodeCommit 存储库：

   ```
   git push origin MyNewBranch
   ```

**注意**  
如果将该`-u`选项添加到**git push**（例如，**git push -u origin main**），则将来可以**git push**不使用该选项*remote-name**branch-name*。将设置上游跟踪信息。要获取上游跟踪信息，请运行 **git remote show *remote-name***（例如，**git remote show origin**）。  
要查看所有本地和远程跟踪分支的列表，请运行 **git branch --all**。  
要在本地存储库中设置与 CodeCommit 存储库中分支相连的分支，请运行**git checkout *remote-branch-name***。

有关更多选项，请参阅 Git 文档。

## 创建分支 (AWS CLI)
<a name="how-to-create-branch-cli"></a>

要将 AWS CLI 命令与一起使用 CodeCommit，请安装 AWS CLI。有关更多信息，请参阅 [命令行参考](cmd-ref.md)。

按照以下步骤使用在 AWS CLI CodeCommit 存储库中创建分支，然后将该分支推送到 CodeCommit 存储库。有关创建初始提交并为空存储库指定默认分支的名称的步骤，请参阅[使用 AWS CLI为存储库创建第一个提交](how-to-create-commit.md#create-first-commit)。

1. 运行 **create-branch** 命令，并指定：
   + 创建分支的 CodeCommit 存储库的名称（带**--repository-name**选项）。
**注意**  
要获取 CodeCommit 存储库的名称，请运行[列表存储库](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli)命令。
   + 新分支的名称（使用 **--branch-name** 选项）。
   + 新分支指向的提交的 ID（使用 **--commit-id** 选项）。

   例如，要在名为的 CodeCommit 存储库中创建一个`MyNewBranch`指向提交 ID `317f8570EXAMPLE` 的名为的分支`MyDemoRepo`：

   ```
   aws codecommit create-branch --repository-name MyDemoRepo --branch-name MyNewBranch --commit-id 317f8570EXAMPLE
   ```

   该命令只在出现错误时生成输出。

1. 要使用新的远程分支名称更新本地 CodeCommit 存储库中可用存储库分支的列表，请运行**git remote update *remote-name***。

   例如，要使用昵称更新 CodeCommit 存储库的可用分支列表，请执行`origin`以下操作：

   ```
   git remote update origin 
   ```
**注意**  
或者，您可以运行 **git fetch** 命令。您还可以通过运行 **git branch --all** 来查看所有远程分支，但在更新本地存储库列表之前，您创建的远程分支不会出现在该列表中。  
有关更多选项，请参阅 Git 文档。

1. 要在本地存储库中设置与 CodeCommit 存储库中新分支相连的分支，请运行**git checkout *remote-branch-name***。

**注意**  
 要获取 CodeCommit 存储库名称及其名称的列表 URLs，请运行**git remote -v**命令。

# 限制推送和合并到中的分支 AWS CodeCommit
<a name="how-to-conditional-branch"></a>

默认情况下，任何拥有足够权限将代码推送到存储 CodeCommit 库的存储库用户都可以为该仓库中的任何分支做出贡献。无论是使用控制台、命令行或 Git，您以何种方式在存储库中添加分支情况都是如此。但是您可能希望对某一分支进行配置，只允许存储库的一些用户向该分支推送或合并代码。例如，您可能希望配置一个生产代码所用的分支，只有一部分高级开发人员才能在该分支上推送或合并更改。其他开发人员仍可从该分支拉取内容，生成他们自己的分支并创建拉取请求，但他们不能将更改推送或合并到该分支。您可以在 IAM 中创建条件策略，针对一个或多个分支使用上下文键，从而配置此访问权限。

**注意**  
要完成本主题中的一些步骤，您必须作为管理员用户登录，该用户需拥有配置并应用 IAM 策略的足够权限。有关更多信息，请参阅[创建 IAM 管理员用户和组](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)。

**Topics**
+ [配置 IAM 策略以限制针对分支的推送和合并](#how-to-conditional-branch-create-policy)
+ [将 IAM 策略应用于 IAM 组或角色](#how-to-conditional-branch-apply-policy)
+ [测试策略](#how-to-conditional-branch-test)

## 配置 IAM 策略以限制针对分支的推送和合并
<a name="how-to-conditional-branch-create-policy"></a>

您可以在 IAM 中创建一个策略，阻止用户更新分支，包括向分支推送提交以及将拉取请求合并到分支。为此，您的策略需使用条件语句，只在满足条件时才应用 `Deny` 语句的效果。 APIs 您在`Deny`语句中包含的内容决定了不允许执行哪些操作。您可以将此策略配置为只应用于一个存储库中的一个分支，应用于一个存储库中的多个分支，或应用于一个 Amazon Web Services 账户的所有存储库中满足条件的所有分支。<a name="how-to-conditional-branch-create-policy-procedure"></a>

**为分支创建条件策略**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 选择 **JSON**，然后粘贴以下示例策略。将 `Resource` 的值替换为存储库的 ARN，其中包含您希望限制访问权限的分支。将 `codecommit:References` 的值替换为您希望限制访问权限的一个或多个分支的引用。例如，该策略拒绝针对名为 *`main`* 的分支和名为 `prod` 的分支（位于名为 `MyDemoRepo` 的存储库中）推送提交、合并分支、删除分支、删除文件、合并拉取请求和添加文件：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "codecommit:GitPush",
                   "codecommit:DeleteBranch",
                   "codecommit:DeleteFile",
                   "codecommit:PutFile",
                   "codecommit:MergeBranchesByFastForward",
                   "codecommit:MergeBranchesBySquash",
                   "codecommit:MergeBranchesByThreeWay",
                   "codecommit:MergePullRequestByFastForward",
                   "codecommit:MergePullRequestBySquash",
                   "codecommit:MergePullRequestByThreeWay"
               ],
               "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
               "Condition": {
                   "StringEqualsIfExists": {
                       "codecommit:References": [
                           "refs/heads/main", 
                           "refs/heads/prod"
                        ]
                   },
                   "Null": {
                       "codecommit:References": "false"
                   }
               }
           }
       ]
   }
   ```

------

   Git 中的分支只是 HEAD 提交 SHA-1 值的指针 (引用)，这就是条件使用 `References` 的原因。如果策略的效果是 `Deny`，而且其中一个操作是 `GitPush`，则 `Null` 语句是必需的，这是由 Git 和 `git-receive-pack` 将更改从本地存储库推送到 CodeCommit 的工作原理决定的。
**提示**  
要创建一个策略来应用于 Amazon Web Services 账户的所有存储库中所有名为 main 的分支，请将 `Resource` 的值从存储库 ARN 改为星号 (`*`)。

1. 选择**查看策略**。更正策略语句中的所有错误，然后继续**创建策略**。

1. JSON 经过验证后，将显示**创建策略**页面。**摘要**部分出现一条警告，告知此策略不会授予权限。这是预期行为。
   + 在**名称**中，输入此策略的名称，例如 **DenyChangesToMain**。
   + 在**描述**中，输入策略用途的描述。您可以自由选择，但我们建议您这样做。
   + 选择**创建策略**。

## 将 IAM 策略应用于 IAM 组或角色
<a name="how-to-conditional-branch-apply-policy"></a>

您已创建一个策略来限制针对某一分支的推送和合并，但该策略在应用于 IAM 用户、组或角色后才会生效。作为最佳实践，请考虑将该策略应用于 IAM 组或角色。将策略应用于单个 IAM 用户无法很好地扩展。<a name="how-to-conditional-branch-apply-policy-procedure"></a>

**将条件策略应用于组或角色**

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，如果您希望针对 IAM 组应用策略，请选择**组**。如果您希望针对用户代入的角色应用策略，请选择**角色**。选择组或角色的名称。

1. 在**权限**选项卡上，选择**附加策略**。

1. 从策略列表中选择您创建的条件策略，然后选择**附加策略**。

有关更多信息，请参阅[附加和分离 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## 测试策略
<a name="how-to-conditional-branch-test"></a>

您应测试策略针对组或角色应用的效果，确保与预期效果相同。您可以使用多种方法进行测试。例如，要测试与上述策略类似的策略，您可以：
+ 使用 IAM 用户登录 CodeCommit 控制台，该用户要么是已应用策略的 IAM 群组的成员，要么担任已应用该策略的角色。在控制台中，向受限分支添加文件。您在尝试向该分支保存或上传文件时，应看到一条错误消息。将文件添加到其他分支。这次操作应该会成功。
+ 使用 IAM 用户登录 CodeCommit 控制台，该用户要么是已应用策略的 IAM 群组的成员，要么担任已应用该策略的角色。创建将合并到受限分支的拉取请求。您应该能够创建拉取请求，但在尝试合并时会出现错误。
+ 在终端或命令行中，在适用限制的分支上创建提交，然后将该提交推送到 CodeCommit 存储库。您应该看到一条错误消息。从其他分支进行的提交和推送应该是正常的。

# 在中查看分支机构详情 AWS CodeCommit
<a name="how-to-view-branch-details"></a>

您可以使用 CodeCommit 控制台查看有关 CodeCommit 存储库中分支的详细信息。您可以查看上次提交到分支的日期、提交消息等。您也可以使用连接到存储库的本地 CodeCommit 存储库中的 AWS CLI 或 Git。

**Topics**
+ [查看分支详细信息（控制台）](#how-to-view-branch-details-console)
+ [查看分支详细信息 (Git)](#how-to-view-branch-details-git)
+ [查看分支详细信息 (AWS CLI)](#how-to-view-branch-details-cli)

## 查看分支详细信息（控制台）
<a name="how-to-view-branch-details-console"></a>

使用 CodeCommit 控制台快速查看仓库的分支列表以及有关分支的详细信息。

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

1. 在 **Repositories (存储库)** 中，选择要在其中查看分支详细信息的存储库的名称。

1. 在导航窗格中，选择 **Branches**。  
![\[存储库中的分支视图。\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-branches.png)

1. 存储库默认分支的名称显示在**默认分支**旁边。要查看有关分支的最近提交的详细信息，请选择该分支，然后选择 **View last commit (查看最近的提交)**。要查看分支中的文件和代码，请选择分支名称。

## 查看分支详细信息 (Git)
<a name="how-to-view-branch-details-git"></a>

要使用本地存储库中的 Git 来查看 CodeCommit 仓库的本地和远程跟踪分支的详细信息，请运行**git branch**命令。

以下步骤是在假设您已经将本地存储库连接到 CodeCommit 存储库的情况下编写的。有关说明，请参阅[连接存储库](how-to-connect.md)。

1. 运行 **git branch** 命令，同时指定 **--all** 选项：

   ```
   git branch --all
   ```

1. 如果成功，该命令返回类似以下内容的输出：

   ```
     MyNewBranch
   * main
     remotes/origin/MyNewBranch
     remotes/origin/main
   ```

   当前打开的分支旁边显示有星号 (`*`)。之后的条目是远程跟踪引用。
**提示**  
**git branch** 显示本地分支。  
**git branch -r** 显示远程分支。  
**git checkout *existing-branch-name*** 切换到指定的分支名称，如果随后立即运行 **git branch**，则其旁边会显示星号 (`*`)。  
**git remote update *remote-name***使用可用 CodeCommit 存储库分支列表更新您的本地存储库。（要获取 CodeCommit 存储库名称及其名称的列表 URLs，请运行**git remote -v**命令。）

有关更多选项，请参阅 Git 文档。

## 查看分支详细信息 (AWS CLI)
<a name="how-to-view-branch-details-cli"></a>

要将 AWS CLI 命令与一起使用 CodeCommit，请安装 AWS CLI。有关更多信息，请参阅 [命令行参考](cmd-ref.md)。

要使用查看有关 CodeCommit 存储库中分支的详细信息，请运行以下一个或多个命令： AWS CLI 
+ 要查看分支名称列表，请运行 [list-branches](#how-to-view-branch-details-cli)。
+ 要查看有关特定分支的信息，请运行 [get-branch](#how-to-view-branch-details-cli-details)。

### 查看分支名称列表
<a name="how-to-view-branch-details-cli-list"></a>

1. 运行**list-branches**命令，指定 CodeCommit 存储库的名称（使用`--repository-name`选项）。
**提示**  
要获取 CodeCommit 存储库的名称，请运行[列表存储库](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli)命令。

   例如，要查看名为`MyDemoRepo`：的 CodeCommit 存储库中有关分支的详细信息：

   ```
   aws codecommit list-branches --repository-name MyDemoRepo
   ```

1. 如果成功，该命令输出一个 `branchNameList` 对象以及每个分支的条目。

   下面是前面示例命令的一些示例输出：

   ```
   {
       "branches": [
           "MyNewBranch",
           "main"
       ]
   }
   ```

### 查看有关分支的信息
<a name="how-to-view-branch-details-cli-details"></a>

1. 运行 **get-branch** 命令，并指定：
   + 存储库名称（使用 **--repository-name** 选项）。
   + 分支名称（使用 **--branch-name** 选项）。

   例如，要查看名为：的 CodeCommit 存储库`MyNewBranch`中名为的分支的相关信息`MyDemoRepo`：

   ```
   aws codecommit get-branch --repository-name MyDemoRepo --branch-name MyNewBranch
   ```

1. 如果成功，该命令输出分支的名称和推送到该分支的最后一个提交的 ID。

   下面是前面示例命令的一些示例输出：

   ```
   {
       "branch": {
             "branchName": "MyNewBranch",
             "commitID": "317f8570EXAMPLE"
       }
   }
   ```

# 比较和合并中的分支 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"
   }
   ```

# 在中更改分支设置 AWS CodeCommit
<a name="how-to-change-branch"></a>

您可以在 AWS CodeCommit 控制台中更改哪个分支用作默认分支，也可以通过使用 AWS CLI。例如，如果您使用将默认分支设置为 *master* 的 Git 客户端创建了第一个提交，则可以创建一个名为 *main* 的分支，然后更改分支设置，以便将新分支设置为存储库的默认分支。要更改其他分支设置，可以从连接到存储库的本地 CodeCommit 存储库中使用 Git。

**Topics**
+ [更改默认分支（控制台）](#how-to-change-branch-console)
+ [更改默认分支 (AWS CLI)](#how-to-change-branch-cli)

## 更改默认分支（控制台）
<a name="how-to-change-branch-console"></a>

您可以在 AWS CodeCommit 控制台中指定哪个分支是 CodeCommit 存储库中的默认分支。

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

1. 在**存储库**中，选择要更改设置的存储库的名称。

1. 在导航窗格中，选择**设置**。

1. 在**默认分支**中，选择分支下拉列表，然后选择其他分支。选择**保存**。
**提示**  
如果在下拉列表中未看到其他分支，则表示您尚未创建任何其他分支。如果存储库只有一个分支，则无法更改存储库的默认分支。有关更多信息，请参阅 [在中创建分支 AWS CodeCommit](how-to-create-branch.md)。
如果您没有看到**默认分支**部分，而是看到通知规则和连接的项目，则说明您位于控制台的常规设置菜单中。存储库的设置菜单列在**存储库**下，与**代码**和**拉取请求**处于同一级别。

## 更改默认分支 (AWS CLI)
<a name="how-to-change-branch-cli"></a>

要将 AWS CLI 命令与一起使用 CodeCommit，请安装 AWS CLI。有关更多信息，请参阅 [命令行参考](cmd-ref.md)。

要使用更改存储库中存储库的分支设置，请运行以下命令： AWS CLI CodeCommit 
+ [update-default-branch](#how-to-change-branch-cli-default)，用于更改默认分支。

### 更改默认分支
<a name="how-to-change-branch-cli-default"></a>

1. 运行 **update-default-branch** 命令，并指定：
   + 更新默认分支的 CodeCommit 存储库的名称（带**--repository-name**选项）。
**提示**  
要获取 CodeCommit 存储库的名称，请运行[列表存储库](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli)命令。
   + 新的默认分支的名称（使用 **--default-branch-name** 选项）。
**提示**  
要获取分支名称，请运行 [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli) 命令。

1. 例如，要将名为的 CodeCommit 存储库`MyNewBranch`中的默认分支更改为`MyDemoRepo`：

   ```
   aws codecommit update-default-branch --repository-name MyDemoRepo --default-branch-name MyNewBranch
   ```

   该命令只在出现错误时生成输出。

有关更多选项，请参阅 Git 文档。

# 删除中的分支 AWS CodeCommit
<a name="how-to-delete-branch"></a>

您可以使用 CodeCommit 控制台删除存储库中的分支。删除中的分支 CodeCommit不会删除本地存储库中的该分支，因此用户可能会继续拥有该分支的副本，直到下次拉取更改为止。要在本地删除分支并将更改推送到 CodeCommit 存储库，请使用连接到该仓库的本地 CodeCommit 存储库中的 Git。

删除分支不会删除任何提交，但会删除分支中所有对提交的引用。如果您删除的分支中包含尚未合并到存储库中其他分支的提交，则除非提交完整，否则您将无法检索这些提交 IDs。

**注意**  
您不能使用本主题中的说明删除存储库的默认分支。如果要删除默认分支，必须先创建一个分支并使新分支成为默认分支，然后才能删除旧分支。有关更多信息，请参阅[创建分支](how-to-create-branch.md)和[更改分支设置](how-to-change-branch.md)。

**Topics**
+ [删除分支（控制台）](#how-to-delete-branch-console)
+ [删除分支 (AWS CLI)](#how-to-delete-branch-cli)
+ [删除分支 (Git)](#how-to-delete-branch-git)

## 删除分支（控制台）
<a name="how-to-delete-branch-console"></a>

您可以使用 CodeCommit 控制台删除 CodeCommit 存储库中的分支。

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

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

1. 在导航窗格中，选择 **Branches**。

1. 找到要删除的分支的名称，选择**删除分支**，然后确认您的选择。

## 删除分支 (AWS CLI)
<a name="how-to-delete-branch-cli"></a>

如果存储库中的分支不是 CodeCommit 存储库的默认分支，则可以使用删除该分支。 AWS CLI 有关安装和使用的更多信息 AWS CLI，请参阅[命令行参考](cmd-ref.md)。

1. 在终端或命令行中，运行 **delete-branch** 命令，并指定：
   + 要删除分支的 CodeCommit 存储库的名称（带**--repository-name**选项）。
**提示**  
要获取 CodeCommit 存储库的名称，请运行[列表存储库](how-to-view-repository-details.md#how-to-view-repository-details-no-name-cli)命令。
   + 要删除的分支的名称（使用 **branch-name** 选项）。
**提示**  
要获取分支名称，请运行 [list-branches](how-to-view-branch-details.md#how-to-view-branch-details-cli) 命令。

1. 例如，要删除名为的 CodeCommit 存储库`MyNewBranch`中名为的分支`MyDemoRepo`：

   ```
   aws codecommit delete-branch --repository-name MyDemoRepo --branch-name MyNewBranch
   ```

   此命令返回有关所删除分支的信息，包括所删除分支的名称和作为该分支标头的提交的完整提交 ID。例如：

   ```
   "deletedBranch": {
       "branchName": "MyNewBranch",
       "commitId": "317f8570EXAMPLE"
   }
   ```

## 删除分支 (Git)
<a name="how-to-delete-branch-git"></a>

按照以下步骤使用本地存储库中的 Git 删除 CodeCommit 仓库中的分支。

编写这些步骤时假设您已经将本地存储库连接到 CodeCommit 存储库。有关说明，请参阅[连接存储库](how-to-connect.md)。

1. 要从本地存储库中删除分支，请运行要删除的分支名称所在*branch-name*的**git branch -D *branch-name***命令。
**提示**  
要获取分支名称列表，请运行 **git branch --all**。

   例如，要删除本地存储库中名为 `MyNewBranch` 的分支，请运行以下命令：

   ```
   git branch -D MyNewBranch
   ```

1. 要从 CodeCommit 存储库中删除分支，请运行**git push *remote-name* --delete *branch-name***命令，其中*remote-name*是本地 CodeCommit 存储库使用的昵称，*branch-name*也是您要从存储 CodeCommit 库中删除的分支的名称。
**提示**  
要获取 CodeCommit 存储库名称及其名称的列表 URLs，请运行**git remote -v**命令。

   例如，要删除 CodeCommit 存储库`MyNewBranch`中名为的分支，名为`origin`：

   ```
   git push origin --delete MyNewBranch
   ```
**提示**  
如果是默认分支，则该命令不会删除分支。

有关更多选项，请参阅 Git 文档。