

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

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

# 使用 Amazon 中的分支来整理源代码 CodeCatalyst
<a name="source-branches"></a>

在 Git 中，分支是指向提交的指针或引用。在开发中，它们是组织工作的便捷方式。您可以使用分支来分离新的或不同版本文件的工作，而不影响其他分支中的工作。您可以使用分支来开发新功能、存储项目的特定版本等。您可以为源存储库中的分支配置规则，将分支上的某些操作限制到该项目中的特定角色。

无论您如何创建 CodeCatalyst ，Amazon 中的源存储库都有内容和默认分支。链接存储库可能没有默认分支或内容，但在初始化它们并创建默认分支 CodeCatalyst 之前无法使用。使用蓝图创建项目时， CodeCatalyst 会为该项目创建一个源存储库，其中包含 README.md 文件、示例代码、工作流程定义和其他资源。在不使用蓝图的情况下创建源存储库时，在首次提交时，系统会为您添加一个 README.md 文件，并为您创建一个*默认分支*。该默认分支名为 *main*。此默认分支在用户克隆存储库时被用作本地存储库的基本或默认分支。

**注意**  
您不能删除默认分支。为源存储库创建的第一个分支是该存储库的默认分支。此外，搜索只会显示默认分支的结果。您无法在其他分支中搜索代码。

在中创建存储库 CodeCatalyst 还会创建第一次提交，这将创建一个包含一个 README.md 文件的*默认分支*。该默认分支的名称是 *main*。这是本指南的示例中使用的默认分支名称。

**Topics**
+ [创建分支](source-create-delete-branch.md)
+ [管理存储库的默认分支](source-branches-default-branch.md)
+ [使用分支规则管理分支允许的操作](source-branches-branch-rules.md)
+ [分支的 Git 命令](source-branches-git.md)
+ [查看分支和详细信息](source-branches-view.md)
+ [删除分支](source-branches-delete.md)

# 创建分支
<a name="source-create-delete-branch"></a>

您可以使用 CodeCatalyst 控制台在 CodeCatalyst 存储库中创建分支。其他用户下次从存储库中提取更改时，就能看到您创建的分支。

**提示**  
您还可以在创建开发环境的过程中创建分支来处理您的代码。有关更多信息，请参阅 [创建开发环境](devenvironment-create.md)。

您还可以使用 Git 创建分支。有关更多信息，请参阅 [针对分支的常用 Git 命令](source-branches-git.md#source-branches-git-table)。

**创建分支（控制台）**

1. 在 CodeCatalyst 控制台中，导航到源存储库所在的项目。

1. 从项目的源存储库列表中选择存储库的名称。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。

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

1. 在存储库的概述页面上，选择**更多**，然后选择**创建分支**。

1. 输入分支的名称。

1. 选择要从中创建分支的分支，然后选择**创建**。

# 管理存储库的默认分支
<a name="source-branches-default-branch"></a>

您可以在 Amazon 的源存储库中指定哪个*分支用作默认分支* CodeCatalyst。无论您如何创建，其中的所有源存储库 CodeCatalyst 都有内容和默认分支。如果您使用蓝图创建项目，为该项目创建的源存储库中的默认分支将命名为 *main*。默认分支的内容会自动显示在该存储库的概述页面上。

**重要**  
CodeCatalyst 不支持检测链接仓库的默认分支中的更改。要更改链接存储库的默认分支，必须先取消其与该分支的链接 CodeCatalyst，更改默认分支，然后再次进行链接。有关更多信息，请参阅 [在中关联 GitHub 存储库、Bitbucket 存储库、 GitLab 项目存储库和 Jira 项目 CodeCatalyst](extensions-link.md)。  
作为最佳实践，在链接存储库之前，请始终确保您拥有最新版本的扩展。

默认分支的处理方式与源存储库中的所有其他分支略有不同。默认分支的名称旁边有一个特殊的标签，即**默认**。当用户使用 Git 客户端将存储库克隆到本地计算机时，默认分支是用作本地存储库的基础分支或默认分支的分支。默认分支也是创建工作流时用于存储工作流 YAML 文件和事务信息的默认位置。使用 search in 时 CodeCatalyst，仅搜索存储库的默认分支。由于默认分支对项目的许多方面都至关重要，因此您无法删除指定为默认分支的分支。但是，您可以选择使用不同的分支作为默认分支。如果这样做，任何应用于以前默认分支的[分支规则](source-branches-branch-rules.md)都将自动应用于您指定为默认分支的分支。

**注意**  
您必须具有项目管理员角色才能更改 CodeCatalyst 项目中源存储库的默认分支。这不适用于链接的存储库。

**查看和更改存储库的默认分支**

1. 导航到存储库所在的项目。

1. 从项目的源存储库列表中选择存储库的名称。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。

   选择要查看其设置的存储库，包括默认分支。

1. 在存储库的概述页面上，选择**更多**，然后选择**管理设置**。

1. 在**默认分支**中，会显示指定为默认分支的分支名称，并在名称旁边显示一个名为**默认**的标签。在**分支**中，同样的标签也会显示在分支列表中该分支名称的旁边。

1. 要更改默认分支，请选择**编辑**。
**注意**  
您必须在项目中具有项目管理员角色，才能更改默认分支。

1. 从下拉列表中选择要设为默认分支的分支名称，然后选择**保存**。

# 使用分支规则管理分支允许的操作
<a name="source-branches-branch-rules"></a>

创建分支时，根据该角色的权限，允许对该分支执行某些操作。您可以通过配置分支规则来更改特定分支允许执行的操作。分支规则基于用户在项目中的角色。您可以选择对某些预定义操作（如将提交推送到分支）进行限制，使得只有项目中具有特定角色的用户才能执行这些操作。通过限制允许哪些角色执行某些操作，有助于您保护项目中的特定分支。例如，如果配置了一个分支规则，只允许具有**项目管理员**角色的用户合并或推送到该分支，那么在项目中具有其他角色的用户将无法更改该分支中的代码。

您应该仔细考虑为分支创建规则的所有影响。例如，如果您选择限制只有具有**项目管理员**角色的用户才能向分支推送，那么具有**贡献者**角色的用户将无法在该分支中创建或编辑工作流，因为工作流 YAML 存储在该分支中，而这些用户无法提交和推送对 YAML 的更改。最佳做法是，在创建分支规则后对其进行测试，以确保它们不会产生任何预料之外的影响。您还可以将分支规则与拉取请求的审批规则结合使用。有关更多信息，请参阅 [管理将拉取请求与审批规则合并的要求](source-pull-requests-approval-rules.md)。

**注意**  
您必须具有项目管理员角色才能管理 CodeCatalyst 项目中源存储库的分支规则。您无法为链接的存储库创建分支规则。  
您只能创建比角色默认权限更严格的分支规则。您创建的分支规则，不能比用户在项目中的角色所允许的权限更宽松。例如，您不能创建分支规则，来允许具有审阅者角色的用户推送到分支。

应用于源存储库默认分支的分支规则，与应用于其他分支的分支规则在行为上有些不同。应用于默认分支的任何规则，都将自动应用于您指定为默认分支的任何分支。以前被设置为默认分支的分支仍将保留应用于它的规则，只是不再具有防止删除的保护功能。这种保护只适用于当前的默认分支。

分支规则有两种状态：**标准**和**自定义**。**标准**表示允许在分支上执行的操作与用户在分支操作中的角色权限相匹配 CodeCatalyst 的操作。要进一步了解哪些角色拥有哪些权限，请参阅[使用用户角色授予访问权限](ipa-roles.md)。**自定义**表示一个或多个分支中的操作具有特定的角色列表来授予执行该操作的权限，与项目中用户角色授予的默认权限不同。

**注意**  
如果创建了分支规则来限制分支的一个或多个操作，则**删除分支**操作会自动设置为只允许具有项目管理员角色的用户删除该分支。

下表列出了操作以及允许在分支上执行这些操作的角色的默认设置。


**分支操作和角色**  

| **分支操作** |  在未应用分支规则时，允许执行此操作的角色  | 
| --- | --- | 
|  合并到分支（这包括将拉取请求合并到分支）  |  项目管理员、贡献者  | 
|  推送到分支  |  项目管理员、贡献者  | 
|  删除分支  |  项目管理员、贡献者  | 
|  删除分支（默认分支）  |  不允许  | 

 您不能删除分支规则，但可以更新这些规则来允许所有角色在分支上执行该操作，这样实际上就是移除了规则。

**注意**  
您必须具有项目管理员角色才能为 CodeCatalyst 项目中的源存储库配置分支规则。这不适用于链接的存储库。链接存储库不支持中的分支规则 CodeCatalyst。<a name="view-edit-branch-rules"></a>

**查看和编辑存储库的分支规则**

1. 导航到存储库所在的项目。

1. 从项目的源存储库列表中选择存储库的名称。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。

   选择要在其中查看分支规则的存储库。

1. 在存储库的概述页面上，选择**分支**。

1. 在**分支规则**列中，查看存储库中每个分支的规则状态。**标准**表示分支操作规则是在源存储库中创建的任何分支的默认规则，并与项目中授予给这些角色的权限相匹配。**自定义**表示一个或多个分支操作所具备的规则，只允许一组不同的角色执行该分支中的一个或多个操作。

   要查看分支规则的具体内容，请选择要查看的分支旁边的**标准**或**自定义**字样。

1. 要创建或更改分支规则，请选择**管理设置**。在源存储库的设置页面上，在**分支规则**中，选择**编辑**。

1. 在**分支**中，从下拉列表中选择要为其配置规则的分支名称。对于每种允许的操作类型，从下拉列表中选择要允许执行该操作的角色，然后选择**保存**。

# 分支的 Git 命令
<a name="source-branches-git"></a>

您可以使用 Git 创建、管理和删除计算机（本地存储库）或开发环境中的源代码库克隆中的分支，然后提交更改并将其推送到 CodeCatalyst 源存储库（远程存储库）。例如：


**针对分支的常用 Git 命令**  

|  |  | 
| --- |--- |
|  列出本地存储库中的所有分支，并在当前分支旁边显示一个星号 (`*`)。  |  `git branch`  | 
|  将远程存储库中所有现有分支的信息提取到本地存储库。  |  `git fetch`  | 
|  列出本地存储库中的所有分支和本地存储库中的远程跟踪分支。  |  `git branch -a`  | 
|  只列出本地存储库中的远程跟踪分支。  |  `git branch -r`  | 
|  使用指定的分支名称在本地存储库中创建一个分支。在您提交并推送更改之前，此分支不会出现在远程存储库中。  |  `git branch branch-name`  | 
|  使用指定的分支名称在本地存储库中创建一个分支，然后切换到该分支。  |  `git checkout -b branch-name`  | 
|  使用指定的分支名称切换到本地存储库中的另一个分支。  |  `git checkout other-branch-name`  | 
|  使用本地存储库为远程存储库指定的昵称和指定的分支名称，将一个分支从本地存储库推送到远程存储库。同时为本地存储库中的分支设置上游跟踪信息。  |  `git push -u remote-name branch-name`  | 
|  将本地存储库中另一个分支的更改合并到本地存储库中的当前分支。  |  `git merge from-other-branch-name`  | 
|  删除本地存储库中的某个分支，除非其包含尚未合并的作业。  |  `git branch -d branch-name`  | 
|  使用本地存储库为远程存储库指定的昵称和指定的分支名称，删除远程存储库中的一个分支。（注意冒号（`:`）的用法。） 或者，在命令中指定 `--delete`。  | `git push remote-name :branch-name` `git push remote-name --delete branch-name`  | 

有关更多信息，请参阅您的 Git 文档。

# 查看分支和详细信息
<a name="source-branches-view"></a>

您可以在 Amazon CodeCatalyst 控制台中查看有关亚马逊 CodeCatalyst远程分支的信息，包括文件、文件夹和特定分支的最新提交的详细信息。您也可以使用 Git 命令和本地操作系统来查看远程和本地分支的这些信息。<a name="source-branches-view-console"></a>

**查看分支（控制台）**

1. 在 CodeCatalyst 控制台中，导航到包含要在其中查看分支的源存储库的项目。选择**代码**，选择**源存储库**，然后选择源存储库。

1. 从项目的源存储库列表中选择存储库的名称。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。

   选择要查看其中分支的存储库。

1. 此时将显示存储库的默认分支。您可以看到分支中的文件和文件夹列表、最新提交的信息，以及 README.md 文件的内容（如果分支中存在）。要查看不同分支的信息，请从存储库分支的下拉列表中选择该分支。

1. 要查看存储库的所有分支，请选择**查看全部**。分支页面显示每个分支的名称、最新提交和规则等信息。

有关如何使用 Git 和操作系统查看分支和详细信息的信息，请参阅[针对分支的常用 Git 命令](source-branches-git.md#source-branches-git-table)、Git 文档和操作系统文档。

# 删除分支
<a name="source-branches-delete"></a>

如果您不再需要某个分支，可以删除它。例如，如果您将一个有功能更改的分支合并到默认分支中，而该功能已经发布，那么您可能想删除原来的功能分支，因为这些更改已经是默认分支的一部分。保持较少的分支数量让用户可以更容易找到包含他们想要处理的更改的分支。删除分支后，该分支的副本会保留在本地计算机上的存储库克隆中，直到用户提取并同步这些更改。<a name="source-branch-delete"></a>

**删除分支（控制台）**

1. 导航到存储库所在的项目。

1. 从项目的源存储库列表中选择存储库的名称。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。

   选择要删除其中分支的存储库。

1. 在存储库的概述页面上，选择分支名称旁边的下拉选择器，然后选择**查看全部**。

1. 选择要删除的分支，然后选择**删除分支**。
**注意**  
您不能删除存储库的默认分支。

1. 您将看到确认对话框。其中显示与分支相关联的版本库、未处理的拉取请求数量和工作流数量。

1. 要确认删除该分支，请在文本框中键入 **delete**，然后选择**删除**。

您也可以使用 Git 删除分支。有关更多信息，请参阅 [针对分支的常用 Git 命令](source-branches-git.md#source-branches-git-table)。