

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

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

# 将现有 Git 存储库克隆到源存储库中
<a name="source-repositories-add-existing"></a>

您可以将现有 Git 存储库克隆到 Amazon 中的空源存储库 CodeCatalyst。这是一种快速入门的方法，可以快速开始 CodeCatalyst 使用以前托管在另一个 Git 存储库提供程序中的代码。您可以通过创建镜像克隆然后将镜像推送到来克隆存储库的内容 CodeCatalyst。或者，如果您有想要添加内容的存储库的本地存储库 CodeCatalyst，则可以将 CodeCatalyst 源存储库作为另一个远程存储库添加到本地存储库，然后推送到空源存储库。这两种方法同样有效。使用镜像克隆不仅能映射分支，还能映射所有引用。这是一种在中创建存储库工作副本的简单而干净的方法 CodeCatalyst。向指向空 CodeCatalyst 源存储库的本地存储库添加远程存储库会将仓库内容添加到 CodeCatalyst，但它也允许您从本地存储库推送到 CodeCatalyst 源存储库和原始 Git 远程存储库。如果您想在不同的远程存储库中维护代码，这可能很有用，但如果其他开发人员只向其中一个远程存储库提交代码，则可能会导致冲突。

以下过程使用基本的 Git 命令来完成这项任务。在 Git 中完成任务有很多方法，包括克隆。有关更多信息，请参阅 [Git 文档](https://git-scm.com/docs/git-clone)。

**重要**  
必须 CodeCatalyst 先在中创建一个空存储库，然后才能将内容克隆到该存储库。您还必须拥有个人访问令牌。有关更多信息，请参阅[创建空的源存储库](source-repositories-create.md#source-repositories-create-empty)和[创建个人访问令牌](source-setting-up.md#source-setting-up-pat)。<a name="source-repositories-clone-exisitng-git-mirror"></a>

**用于`git clone --mirror`将现有 Git 存储库克隆到 CodeCatalyst**

1. 在 CodeCatalyst 控制台中，导航到您在其中创建空存储库的项目。

1. 在项目的摘要页面上，从列表中选择空存储库，然后选择**查看存储库**。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。从项目的源存储库列表中选择空存储库的名称。

1. 复制空存储库的 HTTPS 克隆 URL。您在推送镜像克隆时需要此 URL。例如，如果您在 ExampleCorp 空间中为 MyExampleProject 项目 MyExampleRepo 中的源存储库命名，而您的用户名为 LiJuan，则您的克隆 URL 可能如下所示：

   ```
   https://LiJuan@git.us-west-2.codecatalyst.aws/v1/ExampleCorp/MyExampleProject/MyExampleRepo
   ```

1. 在命令行或终端窗口中，使用`git clone --mirror`命令创建要克隆到的 Git 存储库的镜像克隆 CodeCatalyst。例如，如果要在中创建 codetalyst-blueprints 存储库的镜像克隆 GitHub，则需要输入以下命令：

   ```
   git clone --mirror https://github.com/aws/codecatalyst-blueprints.git
   ```

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

   ```
   cd codecatalyst-blueprints.git
   ```

1. 运行**git push**命令，指定目标 CodeCatalyst 源存储库的 URL 和名称以及**--all**选项。（这是您在步骤 3 中复制的 URL。） 例如：

   ```
   git push https://LiJuan@git.us-west-2.codecatalyst.aws/v1/ExampleCorp/MyExampleProject/MyExampleRepo --all
   ```<a name="source-repositories-clone-local-repo"></a>

**添加远程存储库并将本地存储库推送到 CodeCatalyst**

1. 在 CodeCatalyst 控制台中，导航到您在其中创建空存储库的项目。

1. 在项目的摘要页面上，从列表中选择空存储库，然后选择**查看存储库**。或者，在导航窗格中，选择**代码**，然后选择**源存储库**。从项目的源存储库列表中选择空存储库的名称。

1. 复制空存储库的 HTTPS 克隆 URL。您在推送镜像克隆时需要此 URL。例如，如果您在 ExampleCorp 空间中为 MyExampleProject 项目 MyExampleRepo 中的源存储库命名，而您的用户名为 LiJuan，则您的克隆 URL 可能如下所示：

   ```
   https://LiJuan@git.us-west-2.codecatalyst.aws/v1/ExampleCorp/MyExampleProject/MyExampleRepo
   ```

1. 在命令行或终端窗口中，将目录更改为要推送到 CodeCatalyst的本地存储库。

1. 运行 git remote -v 命令查看本地存储库的现有远程存储库。例如，如果您要在美国东部（俄亥俄州）区域克隆名为 **MyDemoRepo** 的 AWS CodeCommit 存储库的本地存储库，命令输出可能如下所示：

   ```
   origin  https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)
   origin  https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)
   ```

   如果您想继续使用存储库，可复制远程 URL。

1. 使用`git remote remove`命令移除 CodeCommit 存储库以获取 URLs Origin 并推送：

   ```
   git remote remove origin
   ```

1. 使用 **git remot** e add 命令将 CodeCatalyst 源存储库 URL 添加为本地存储库的远程获取和推送。例如：

   ```
   git remote add origin https://LiJuan@git.us-west-2.codecatalyst.aws/v1/ExampleCorp/MyExampleProject/MyExampleRepo
   ```

   这会将 CodeCommit 仓库推送 URL 替换为 CodeCatalyst 源存储库 URL，但不会更改获取 URL。因此，如果你再次运行 git remote-v 命令，你会看到你现在正在从 CodeCommit 远程存储库中提取（获取）代码，但你被配置为将更改从本地存储库推送到 CodeCatalyst 源存储库：

   ```
   origin  https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch)
   origin  https://LiJuan@git.us-west-2.codecatalyst.aws/v1/ExampleCorp/MyExampleProject/MyExampleRepo (push)
   ```

   如果您想使用以下`git remote set-url`命令推送到两个存储库，则可以选择添加回 CodeCommit 远程 URL：

   ```
   git remote set-url --add --push origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo
   ```

1. 运行 `git push` 命令将本地存储库推送到所有已配置的推送远程存储库。或者，运行 **git push -u -origin** 命令，指定 **--all** 选项将本地存储库同时推送到两个存储库。例如：

   ```
   git push -u -origin --all
   ```

**提示**  
根据 Git 版本的不同，--all 可能无法将本地存储库的所有分支推送到空存储库。您可能需要分别签出和推送每个分支。