

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

# 将 Git 仓库迁移到 AWS CodeCommit
<a name="how-to-migrate-repository-existing"></a>

您可以将现有 Git 仓库迁移到 CodeCommit 仓库。本主题中的过程将演示如何将托管在另一个 Git 存储库上的项目迁移到 CodeCommit。在该过程中，您将：
+ 完成所需的初始设置 CodeCommit。
+ 创建 CodeCommit 存储库。
+ 克隆存储库并将其推送到 CodeCommit。
+ 查看 CodeCommit 存储库中的文件。
+ 与您的团队共享 CodeCommit 存储库。

![\[将 Git 存储库迁移到 CodeCommit\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-migrate-existing.png)


**Topics**
+ [步骤 0：需要进行设置才能访问 CodeCommit](#how-to-migrate-existing-setup)
+ [步骤 1：创建 CodeCommit 存储库](#how-to-migrate-existing-create)
+ [第 2 步：克隆存储库并推送到 CodeCommit 存储库](#how-to-migrate-existing-clone)
+ [步骤 3：查看中的文件 CodeCommit](#how-to-migrate-existing-view)
+ [步骤 4：共享 CodeCommit 存储库](#how-to-migrate-existing-share)

## 步骤 0：需要进行设置才能访问 CodeCommit
<a name="how-to-migrate-existing-setup"></a>

在将存储库迁移到之前 CodeCommit，必须为本地计算机创建和配置一个 IAM 用户， CodeCommit 并配置本地计算机以进行访问。您还应安装 AWS CLI 来管理 CodeCommit。尽管你可以在没有它的情况下执行大多数 CodeCommit 任务，但在命令行或终端上使用 Git 时，它 AWS CLI 提供了灵活性。

如果您已经做好了准备 CodeCommit，则可以直接跳到[步骤 1：创建 CodeCommit 存储库](#how-to-migrate-existing-create)。

**创建和配置用于访问的 IAM 用户 CodeCommit**

1. 前往 [http://aws.amazon.com](https://aws.amazon.com/)，并选择**注册**，创建一个 Amazon Web Services 账户。

1. 创建 IAM 用户或使用您的 Amazon Web Services 账户中的现有用户。确保您具有与该 IAM 用户关联的访问密钥 ID 和秘密访问密钥。有关更多信息，请参阅[在 Amazon Web Services 账户中创建 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html)。
**注意**  
CodeCommit 要求 AWS Key Management Service。如果您使用的是现有的 IAM 用户，请确保该用户没有明确拒绝所要求的 AWS KMS 操作的策略 CodeCommit。有关更多信息，请参阅 [AWS KMS 和加密](encryption.md)。

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

1. 在 IAM 控制台的导航窗格中，选择**用户**，然后选择要配置 CodeCommit 访问权限的 IAM 用户。

1. 在 **Permissions** 选项卡上，选择 **Add Permissions**。

1. 在 **Grant permissions (授予权限)** 中，选择 **Attach existing policies directly (直接附加现有策略)**。

1. 从策略列表中，选择**AWSCodeCommitPowerUser**或其他托管策略进行 CodeCommit 访问。有关更多信息，请参阅 [AWS 的托管策略 CodeCommit](security-iam-awsmanpol.md)。

   选择要附加的策略后，选择**下一步：审核**以审核要附加到 IAM 用户的策略列表。如果列表正确，选择 **Add permissions**。

    有关 CodeCommit 托管策略以及与其他群组和用户共享仓库访问权限的更多信息，请参阅[共享存储库](how-to-share-repository.md)和[的身份验证和访问控制 AWS CodeCommit](auth-and-access-control.md)。

**要安装和配置 AWS CLI**

1. 在您的本地计算机上，下载并安装 AWS CLI。这是通过命令行与交互 CodeCommit 的先决条件。我们建议您安装 AWS CLI 版本 2。它是的最新主要版本 AWS CLI ，支持所有最新功能。它是唯一支持使用根账户、联合访问权限或临时证书的版本**git-remote-codecommit**。 AWS CLI 

   有关更多信息，请参阅[使用 AWS 命令行界面进行设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)。
**注意**  
CodeCommit 仅适用于 1.7.38 及更高 AWS CLI 版本。作为最佳实践，请安装或升级 AWS CLI 到可用的最新版本。要确定 AWS CLI 您安装了哪个版本，请运行**aws --version**命令。  
要将旧版本的升级 AWS CLI 到最新版本，请参阅[安装 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)。

1. 运行此命令以验证的 CodeCommit 命令 AWS CLI 是否已安装。

   ```
   aws codecommit help
   ```

   此命令返回 CodeCommit 命令列表。

1.  AWS CLI 使用**configure**命令配置配置文件，如下所示：。

   ```
   aws configure
   ```

   出现提示时，指定要与之 AWS 配合使用的 IAM 用户的访问 AWS 密钥和私有访问密钥 CodeCommit。另外，请务必指定存储库的 AWS 区域 存在位置，例如`us-east-2`。系统提示指定默认输出格式时，指定 `json`。例如，如果您正在为 IAM 用户配置相关配置文件：

   ```
   AWS Access Key ID [None]: Type your IAM user AWS access key ID here, and then press Enter
   AWS Secret Access Key [None]: Type your IAM user AWS secret access key here, and then press Enter
   Default region name [None]: Type a supported region for CodeCommit here, and then press Enter
   Default output format [None]: Type json here, and then press Enter
   ```

   有关创建和配置用于的配置文件的更多信息 AWS CLI，请参阅以下内容：
   + [命名配置文件](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
   + [在中使用 IAM 角色 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)
   + [设置命令](https://docs.aws.amazon.com/cli/latest/reference/set.html)
   + [使用轮换凭证连接到 AWS CodeCommit 存储库](temporary-access.md)

   要连接到存储库或其他存储库中的资源 AWS 区域，必须 AWS CLI 使用默认的区域名称重新配置。支持的默认区域名称 CodeCommit 包括：
   + us-east-2
   + us-east-1
   + eu-west-1
   + us-west-2
   + ap-northeast-1
   + ap-southeast-1
   + ap-southeast-2
   + ap-southeast-3
   + me-central-1
   + eu-central-1
   + ap-northeast-2
   + sa-east-1
   + us-west-1
   + eu-west-2
   + ap-south-1
   + ap-south-1
   + ca-central-1
   + us-gov-west-1
   + us-gov-east-1
   + eu-north-1
   + ap-east-1
   + me-south-1
   + cn-north-1
   + cn-northwest-1
   + eu-south-1
   + ap-northeast-3
   + af-south-1
   + il-central-1

   有关 CodeCommit 和的更多信息 AWS 区域，请参阅[区域和 Git 连接端点](regions.md)。有关 IAM、访问密钥和秘密密钥的更多信息，请参阅‭[如何获取凭证？](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_Introduction.html#IAM_SecurityCredentials)和[管理 IAM 用户的访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html)。有关 AWS CLI 和配置文件的更多信息，请参阅[命名配置文件](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

接下来，您必须安装 Git。
+ **对于 Linux、macOS 或 Unix**：

  要处理 CodeCommit 存储库中的文件、提交和其他信息，必须在本地计算机上安装 Git。 CodeCommit 支持 Git 版本 1.7.9 及更高版本。Git 版本 2.28 支持为初始提交配置分支名称。我们建议使用最新版本的 Git。

  要安装 Git，建议您访问 [Git 下载](http://git-scm.com/downloads)等网站。
**注意**  
Git 是一个不断发展的平台，会定期进行更新。有时，功能更改可能会影响其工作方式 CodeCommit。如果您在使用特定版本的 Git 时遇到问题 CodeCommit，请查看中的信息[故障排除](troubleshooting.md)。
+ **对于 Windows：**

  要处理 CodeCommit 存储库中的文件、提交和其他信息，必须在本地计算机上安装 Git。 CodeCommit 支持 Git 版本 1.7.9 及更高版本。Git 版本 2.28 支持为初始提交配置分支名称。我们建议使用最新版本的 Git。

  要安装 Git，建议访问 [Git for Windows](https://gitforwindows.org/) 等网站。如果您使用此链接安装 Git，则可以接受除以下设置之外的所有安装默认设置：
  + 在**调整 PATH 环境**步骤中出现提示时，从命令行中选择使用 Git 的选项。
  + （可选）如果您打算将 HTTPS 与中包含的凭据帮助程序一起使用， AWS CLI 而不是为其配置 Git 凭据 CodeCommit，请在 “**配置额外选项**” 页面上，确保清除 “**启用 Git 凭据管理器**” 选项。仅当 IAM 用户配置 Git 凭证时，Git 凭证管理器 CodeCommit 才与兼容。有关更多信息，请参阅[适用于使用 Git 凭证的 HTTPS 用户](setting-up-gc.md)和[Windows 版 Git：我安装了 Windows 版 Git，但在访问我的存储库时被系统拒绝 (403)](troubleshooting-ch.md#troubleshooting-windowshttps)。
**注意**  
Git 是一个不断发展的平台，会定期进行更新。有时，功能更改可能会影响其工作方式 CodeCommit。如果您在使用特定版本的 Git 时遇到问题 CodeCommit，请查看中的信息[故障排除](troubleshooting.md)。

CodeCommit 同时支持 HTTPS 和 SSH 身份验证。要完成设置，您必须为 CodeCommit （HTTPS，建议大多数用户使用）、访问时使用的 SSH 密钥对 CodeCommit （SSH）、**git-remote-codecommit**（建议使用联合访问的用户使用）或 AWS CLI （HTTPS）中包含的凭据助手配置 Git 凭证。
+ 有关在所有支持的操作系统上设置 Git 凭证的信息，请参阅[步骤 3：创建 Git 凭据，以便通过 HTTPS 连接到 CodeCommit](setting-up-gc.md#setting-up-gc-iam)。
+ 有关在 Linux、macOS 或 Unix 上设置 SSH 的信息，请参阅[SSH 和 Linux、macOS 或 Unix：为 Git 设置公钥和私钥以及 CodeCommit](setting-up-ssh-unixes.md#setting-up-ssh-unixes-keys-unixes)。
+  有关在 Windows 上设置 SSH 的信息，请参阅[第 3 步：为 Git 设置公钥和私钥以及 CodeCommit](setting-up-ssh-windows.md#setting-up-ssh-windows-keys-windows)。
+ 对于 **git-remote-codecommit**，请参阅[使用的 HTTPS 连接 AWS CodeCommit 的设置步骤 git-remote-codecommit](setting-up-git-remote-codecommit.md)。
+ 有关 Linux、macOS 或 Unix 上的凭证助手，请参阅[设置凭证助手（Linux、macOS 或 Unix）](setting-up-https-unixes.md#setting-up-https-unixes-ch-config)。
+ 有关在 Windows 上设置凭证辅助程序的信息，请参阅[设置凭证辅助程序 (Windows)](setting-up-https-windows.md#setting-up-https-windows-ch-config)。

## 步骤 1：创建 CodeCommit 存储库
<a name="how-to-migrate-existing-create"></a>

在本节中，您将使用 CodeCommit 控制台创建用于本教程其余部分的 CodeCommit 存储库。要使用创建存储库，请参阅[创建存储库 (AWS CLI)](how-to-create-repository.md#how-to-create-repository-cli)。 AWS CLI 

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

1. 在区域选择器中，选择要创建存储库 AWS 区域 的位置。有关更多信息，请参阅 [区域和 Git 连接端点](regions.md)。

1. 在**存储库**页面上，选择**创建存储库**。

1. 在**创建存储库**页面上的**存储库名称**中，为存储库输入名称。
**注意**  
存储库名称区分大小写。名称在 AWS 区域 中对于 Amazon Web Services 账户必须唯一。

1. （可选）在**描述**中，输入存储库的描述。这可以帮助您及其他用户了解存储库的用途。
**注意**  
“描述”字段在控制台中显示“Markdown”，并接受所有 HTML 字符和有效的 Unicode 字符。如果您是使用`GetRepository`或的应用程序开发人员，`BatchGetRepositories` APIs 并且计划在 Web 浏览器中显示存储库描述字段，请参阅 [CodeCommit API 参考](https://docs.aws.amazon.com/codecommit/latest/APIReference/)。

1. （可选）选择 **Add t** ag，向存储库添加一个或多个存储库标签（可帮助您组织和管理 AWS 资源的自定义属性标签）。有关更多信息，请参阅 [在中标记存储库 AWS CodeCommit](how-to-tag-repository.md)。

1. （可选）展开**其他配置**以指定是使用默认密钥 AWS 托管式密钥 还是您自己的客户托管密钥来加密和解密此存储库中的数据。如果您选择使用自己的客户托管密钥，则必须确保该密钥在您创建存储库 AWS 区域 的地方可用，并且该密钥处于活动状态。有关更多信息，请参阅 [AWS Key Management Service 以及 AWS CodeCommit 存储库的加密](encryption.md)。

1. （可选）如果此存储库包含 **Java 或 Python 代码，并且您想让 CodeGuru Reviewer 对其进行分析，请选择 “启用 Java 和 Python 版 Ama** zon CodeGuru Reviewer”。 CodeGuru Reviewer 使用多个机器学习模型来查找代码缺陷，并对拉取请求提出改进和修复建议。有关更多信息，请参阅 [https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/Welcome.html](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/Welcome.html)。

1. 选择**创建**。

![\[创建用于将 Git 仓库迁移到的仓库 CodeCommit\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-create-repo-migrate-existing.png)


创建后，存储库将显示在**存储库**列表中。在 URL 列中，选择复制图标，然后选择用于连接到 CodeCommit 的协议（SSH 或 HTTPS）。复制 URL。

例如，如果您为仓库命名，*MyClonedRepository*并且在美国东部（俄亥俄州）地区使用带有 HTTPS 的 Git 凭证，则 URL 如下所示：

```
https://git-codecommit.us-east-2.amazonaws.com/MyClonedRepository
```

稍后在[第 2 步：克隆存储库并推送到 CodeCommit 存储库](#how-to-migrate-existing-clone)中您将需要该 URL。

## 第 2 步：克隆存储库并推送到 CodeCommit 存储库
<a name="how-to-migrate-existing-clone"></a>

在本部分中，您将 Git 存储库克隆到本地计算机，从而创建所谓的本地存储库。然后，您将本地存储库的内容推送到您之前创建的 CodeCommit 存储库。

1. 在本地计算机上的终端或命令提示符下，运行带有将远程存储库的裸副本克隆到名为的新文件夹中的`--mirror`选项*aws-codecommit-demo*。**git clone**这是仅用于迁移的裸存储库。它不是用于与中迁移的存储库进行交互的本地存储库。 CodeCommit您可以稍后在迁移完成后再 CodeCommit 创建。

   以下示例将 GitHub (*https://github.com/awslabs/aws-demo-php-simple-app.git*) 上托管的演示应用程序克隆到名为的目录中的本地存储库。*aws-codecommit-demo*

   ```
   git clone --mirror https://github.com/awslabs/aws-demo-php-simple-app.git aws-codecommit-demo
   ```

1. 切换到您执行克隆操作的目录。

   ```
   cd aws-codecommit-demo
   ```

1. 运行**git push**命令，指定目标 CodeCommit 存储库的 URL 和名称以及**--all**选项。（这是您在[步骤 1：创建 CodeCommit 存储库](#how-to-migrate-existing-create)中复制的 URL）。

   例如，如果您为存储库命名*MyClonedRepository*并设置为使用 HTTPS，则将运行以下命令：

   ```
   git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --all
   ```
**注意**  
**--all** 选项仅推送该存储库的所有分支。它不会推送其他引用，例如标签。如果您想要推送标签，请等待初始推送完成，然后再次推送，这次使用 **--tags** 选项：  

   ```
   git push ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --tags
   ```
有关更多信息，请参阅 Git 网站上的 [Git 推送](https://git-scm.com/docs/git-push)。有关推送大型存储库的信息，特别是一次性推送所有引用的情况（例如，使用 **--mirror** 选项），请参阅[以增量方式迁移存储库](how-to-push-large-repositories.md)。

将存储库迁移到后，可以删除该*aws-codecommit-demo*文件夹及其内容 CodeCommit。要创建包含所有正确引用的本地存储库，以便在中使用存储库 CodeCommit，请运行不带`--mirror`选项的`git clone`命令：

```
git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository
```

## 步骤 3：查看中的文件 CodeCommit
<a name="how-to-migrate-existing-view"></a>

推送目录内容后，您可以使用 CodeCommit 控制台快速查看该存储库中的所有文件。

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

1. 在**存储库**中，选择存储库的名称（例如*MyClonedRepository*）。

1. 在存储库中查看分支、克隆 URLs、设置等的文件。  
![\[中克隆存储库的视图 CodeCommit\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/codecommit-cloned-repo-url.png)

## 步骤 4：共享 CodeCommit 存储库
<a name="how-to-migrate-existing-share"></a>

在中创建存储库时 CodeCommit，会生成两个端点：一个用于 HTTPS 连接，另一个用于 SSH 连接。两者都能提供安全的网络连接。您的用户可以使用这两种协议中的任何一种。不管您向用户推荐哪种协议，这两种终端节点都保持有效。在与他人共享您的存储库之前，您必须创建允许其他用户访问该存储库的 IAM policy。向您的用户提供下述访问说明。

**为存储库创建客户托管策略**

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

1. 在 **Dashboard** 导航区域中选择 **Policies**，然后选择 **Create Policy**。

1. 在**创建策略**页面上，选择**导入管理型策略**。

1. 在**导入管理型策略**页面的**筛选策略**中，输入 **AWSCodeCommitPowerUser**。选择策略名称旁的按钮，然后选择**导入**。

1. 在**创建策略**页面上，选择 **JSON**。将 CodeCommit 操作`Resource`行的 “\$1” 部分替换为 CodeCommit 存储库的 Amazon 资源名称 (ARN)，如下所示：

   ```
   "Resource": [
    "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
    ]
   ```
**提示**  
**要查找 CodeCommit 仓库的 ARN，请转到 CodeCommit 控制台，从列表中选择仓库名称，然后选择 “设置”。**有关更多信息，请参阅 [查看存储库详细信息](how-to-view-repository-details.md)。

   若要将该策略应用到多个存储库，请通过指定其 ARN 将各个存储库添加为资源。在每个资源语句之间加上逗号，如下所示：

   ```
   "Resource": [
    "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
    "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo"
    ]
   ```

   完成编辑后，选择**查看策略**。

1. 在 “**查看策略**” 页面的 “**名称**” 中，输入策略的新名称（例如*AWSCodeCommitPowerUser-MyDemoRepo*）。（可选）提供此策略的描述。

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

要管理对您的存储库的访问，请为其用户创建一个 IAM 组、向该组添加 IAM 用户，然后附加在上一步中创建的客户管理型策略。附上访问所需的任何其他策略，例如 IAMUserSSHKeys 或IAMSelfManageServiceSpecificCredentials。

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

1. 在 **Dashboard** 导航区域中选择 **Groups**，然后选择 **Create New Group**。

1. 在**设置组名**页面上的**组名**中，为组输入名称（例如，*MyDemoRepoGroup*），然后选择**下一步**。请考虑在组名称中包含存储库名称。
**注意**  
该名称必须在 Amazon Web Services 账户间保持唯一。

1. 选中您在上一节中创建的客户托管策略旁边的复选框（例如，**AWSCodeCommitPowerUser-MyDemoRepo**）。

1. 在 **Review** 页面上，选择 **Create Group**。IAM 将使用已附加的指定策略创建此组。此组会显示在与您的 Amazon Web Services 账户关联的组列表中。

1. 从列表中选择您的组。

1. 在组摘要页面上，选择**用户** 选项卡，然后选择**向组添加多个用户**。在显示与您的 Amazon Web Services 账户关联的所有用户的列表中，选中要允许其访问 CodeCommit 存储库的用户旁边的复选框，然后选择**添加用户**。
**提示**  
您可以使用搜索框快速地按名称查找用户。

1. 添加用户后，关闭 IAM 控制台。

创建要 CodeCommit 使用您配置的策略组和策略进行访问的 IAM 用户后，请向该用户发送连接到存储库所需的信息。

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

1. 在区域选择器中，选择存储库的创建 AWS 区域 位置。存储库特定于 AWS 区域。有关更多信息，请参阅 [区域和 Git 连接端点](regions.md)。

1. 在 **Repositories (存储库)** 页面上，选择要共享的存储库。

1. 在**克隆 URL** 中，选择您希望用户使用的协议。这会复制连接协议的克隆 URL。

1. 向您的用户发送克隆 URL 以及任何其他说明，例如安装 AWS CLI、配置配置文件或安装 Git。请确保包含连接协议（例如 HTTPS）的配置信息。