

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

# 什么是 AWS CodeCommit？
<a name="welcome"></a>

AWS CodeCommit 是一项由 Amazon Web Services 托管的版本控制服务，可用于私下存储和管理云中的资产（例如文档、源代码和二进制文件）。有关定价的信息 CodeCommit，请参阅[定价。](https://aws.amazon.com/codecommit/pricing/)

**注意**  
CodeCommit 在许多合规计划的范围内。有关合规工作的详细信息 AWS 以及合规工作，请参阅[合规性计划范围内的AWS 服务](https://aws.amazon.com/compliance/services-in-scope/)。  
这是一项符合 HIPAA 要求的服务。[有关 AWS《1996 年美国健康保险流通与责任法案》(HIPAA) 以及使用 AWS 服务处理、存储和传输受保护的健康信息 (PHI) 的更多信息，请参阅 HIPAA 概述。](https://aws.amazon.com/compliance/hipaa-compliance/)  
有关该服务以及规定安全管理最佳实践的安全管理标准 ISO 27001 的信息，请参阅 [ISO 27001 概述](https://aws.amazon.com/compliance/iso-27001-faqs/)。  
有关此服务和支付卡行业数据安全标准 (PCI DSS) 的信息，请参阅 [PCI DSS 概述](https://aws.amazon.com/compliance/pci-dss-level-1-faqs/)。  
有关此服务和美国联邦信息处理标准 (FIPS) 第 140-2 版美国政府标准（其中规定了对保护敏感信息的加密模块的安全要求）的信息，请参阅[美国联邦信息处理标准 (FIPS) 第 140-2 版概览 ](https://aws.amazon.com/compliance/fips/)和 [Git 连接端点](regions.md#regions-git)。

**Topics**
+ [简介 CodeCommit](#welcome-introducing)
+ [CodeCommit、Git，然后根据自己的需求选择合适的 AWS 服务](#welcome-alternate-services)
+ [如何运 CodeCommit 作？](#welcome-how-it-works)
+ [与 Amazon S3 中的文件版本控制有何 CodeCommit 不同？](#welcome-arc-vs-s3)
+ [我该如何开始 CodeCommit？](#welcome-get-started)
+ [哪里可以找到有关 Git 的更多信息？](#welcome-get-started-with-git)

## 简介 CodeCommit
<a name="welcome-introducing"></a>

CodeCommit 是一项安全、高度可扩展的托管源代码控制服务，用于托管私有 Git 存储库。 CodeCommit 您无需管理自己的源代码控制系统或担心扩展其基础架构。您可以使用存储从代码 CodeCommit 到二进制文件的所有内容。它支持 Git 的标准功能，可与您现有的基于 Git 的工具无缝协作。

借助 CodeCommit，您可以：
+ **受益于由托管的完全托管的服务 AWS**。 CodeCommit 提供高服务可用性和耐用性，并消除了管理您自己的硬件和软件的管理开销。没有需要预置和扩展的硬件，也没有需要安装、配置和更新的服务器软件。
+ **安全地存储您的代码**。 CodeCommit 存储库在静态和传输中都经过加密。
+ **协作处理代码。** CodeCommit 存储库支持拉取请求，用户可以在合并到分支之前查看和评论彼此的代码更改；自动向用户发送有关拉取请求和评论的电子邮件的通知等。
+ **轻松扩展您的版本控制项目**。 CodeCommit 存储库可向上扩展以满足您的发展需要。该服务能够处理具有大量文件或分支、大尺寸文件及冗长版本历史记录的存储库。
+ **随时随地存放任何东西**。 CodeCommit 对存储库的大小或可以存储的文件类型没有限制。
+ **与其他 AWS 和第三方服务集成**。 CodeCommit 让您的存储库靠近 AWS 云端的其他生产资源，这有助于提高开发生命周期的速度和频率。它与 IAM 集成，可以与其他 AWS 服务一起使用，也可以与其他存储库并行使用。有关更多信息，请参阅 [AWS CodeCommit 产品和服务集成](integrations.md)。
+ **轻松地从远程存储库迁移文件**。您可以 CodeCommit 从任何基于 Git 的存储库迁移到。
+ **使用你已经知道的 Git 工具**。 CodeCommit 支持 Git 命令以及自己的 AWS CLI 命令和 APIs。

## CodeCommit、Git，然后根据自己的需求选择合适的 AWS 服务
<a name="welcome-alternate-services"></a>

作为一项基于 Git 的服务， CodeCommit 非常适合大多数版本控制需求。未对文件大小、文件类型和存储库大小施加任何限制。但是，Git 有一些固有的限制，这些限制会对某些类型的操作的性能产生负面影响，特别是随着时间的推移。您可以避免将 CodeCommit 存储库性能用于其他 AWS 服务更适合该任务的用例，从而避免存储库性能的潜在降低。您还可以为复杂的存储库优化 Git 性能。以下是一些用例，在这些用例中 CodeCommit，Git 可能不是您的最佳解决方案，或者您可能需要采取其他步骤来优化 Git。


****  

| 使用场景 | 说明 | 要考虑的其他服务 | 
| --- | --- | --- | 
| 经常更改的大文件 | Git 使用增量编码来存储各个文件版本之间的差异。例如，如果您更改文档中的几个单词，Git 将只存储这些已更改的单词。如果您的文件或对象的大小超过 5 MB，并且进行了许多更改，则 Git 可能需要重新构造一个很大的增量差异链。随着时间的推移，这可能会消耗越来越多的本地计算机和本地计算机上的计算资源。 CodeCommit  | 要对大型文件进行版本控制，请考虑使用 Amazon Simple Storage Service (Amazon S3)。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》中的[使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)。 | 
| 数据库 | 随着时间的推移，Git 存储库会变得越来越大。由于版本控制将跟踪所有更改，因此，任何更改都将增大您的存储库。换句话说，在提交数据时，即使删除了提交中的数据，也会将数据添加到存储库中。随着时间的推移，需要处理和传输的数据会越来越多，Git 的速度将变慢。这对数据库使用案例尤其不利。Git 不是作为数据库设计的。 | 要创建和使用具有一致性能的数据库（而不管大小如何），请考虑使用 Amazon DynamoDB。有关更多信息，请参阅 [Amazon DynamoDB 入门指南](https://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/)。 | 
| 审核跟踪 | 通常，审核跟踪会保持很长一段时间，并且由系统进程以非常频繁的节奏连续生成。Git 旨在安全地存储由开发人员组在开发周期中生成的源代码。快速更改的存储库会不断存储以编程方式生成的系统更改，但性能会随着时间的推移而降低。 | 要存储审计跟踪记录，请考虑使用 Amazon Simple Storage Service (Amazon S3)。要根据您的用例来审计 AWS 活动，请考虑使用[AWS CloudTrail[AWS Config](https://aws.amazon.com/config/)](https://aws.amazon.com/cloudtrail/)、或 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)。 | 
| 备份 | Git 是为开发人员编写的版本源代码而设计的。作为备份策略，您可以[将提交推送到两个远程 CodeCommit 存储库](how-to-mirror-repo-pushes.md)，包括一个存储库。但是，Git 并不是设计用来处理计算机文件系统、数据库转储或类似备份内容的备份。这样做可能会降低系统速度，增加克隆和推送存储库所需的时间。 | 有关备份到 AWS 云端的信息，请参阅 [Backup & Restor](https://aws.amazon.com/backup-restore/) e。 | 
| 大量分支或引用 | 当 Git 客户端推送或提取存储库数据时，即使您只对单个分支感兴趣，远程服务器也必须发送所有分支和引用（如标签）。如果您有数千个分支和引用，这可能需要一些时间来处理和发送（打包协商）并导致明显缓慢的存储库响应。您拥有的分支和标签越多，此过程所需的时间就越长。我们建议使用 CodeCommit，但要删除不再需要的分支和标签。 | 要分析 CodeCommit 存储库中的参考文献数量以确定哪些可能不需要引用，可以使用以下命令之一：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/welcome.html) | 

## 如何运 CodeCommit 作？
<a name="welcome-how-it-works"></a>

 CodeCommit 基于 Git 的存储库的用户很熟悉，但即使是那些不熟悉的存储库也应该会发现过渡到 CodeCommit 相对简单。 CodeCommit 提供了一个控制台，便于创建存储库以及列出现有存储库和分支。只需几个简单的步骤，用户就可以找到有关存储库的信息并将其克隆到他们的计算机上，创建一个本地存储库，在那里他们可以进行更改，然后将其推送到 CodeCommit 存储库。用户可以在本地计算机上使用命令行或使用基于 GUI 的编辑器执行作业。

下图显示了如何使用开发计算机、 AWS CLI 或 CodeCommit控制台以及 CodeCommit 服务来创建和管理存储库：

![\[典型 CodeCommit 工作流程\]](http://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/images/arc-workflow.png)




1. 使用 AWS CLI 或 CodeCommit 控制台创建 CodeCommit 存储库。

1. 在开发计算机上，使用 Git 运行**git clone**，指定 CodeCommit 存储库的名称。这将创建一个连接到存储库的本地 CodeCommit 存储库。

1. 在您的开发计算机上使用本地存储库修改（添加、编辑和删除）文件，然后运行 **git add** 将修改后的文件暂存在本地。运行**git commit**以在本地提交文件，然后运行将文件发送**git push**到 CodeCommit 存储库。

1. 下载其他用户的更改。运行**git pull**以将 CodeCommit 存储库中的文件与本地存储库同步。这可确保您使用最新版本的文件。

您可以使用 AWS CLI 或 CodeCommit 控制台来跟踪和管理您的仓库。

## 与 Amazon S3 中的文件版本控制有何 CodeCommit 不同？
<a name="welcome-arc-vs-s3"></a>

CodeCommit 针对团队软件开发进行了优化。它能够管理多个文件的更改批次（当其他开发人员也在进行更改时，可能会发生这种情况）。Amazon S3 版本控制支持恢复以往版本的文件，但它不侧重于软件开发团队需要的协作文件跟踪功能。

## 我该如何开始 CodeCommit？
<a name="welcome-get-started"></a>

首先，请执行 CodeCommit以下操作：

1. 按照[设置 ](setting-up.md)中的步骤准备您的开发计算机。

1. 按照[开始使用](getting-started-topnode.md)中的一个或多个教程中的步骤操作。

1. 在中@@ [创建](how-to-create-repository.md)版本控制项目 CodeCommit 或[将版本控制项目迁移](how-to-migrate-repository.md)到 CodeCommit。

## 哪里可以找到有关 Git 的更多信息？
<a name="welcome-get-started-with-git"></a>

如果您还不知道它，应该先[了解如何使用 Git](how-to-basic-git.md)。下面是一些有用的资源：
+ [Pro Git](http://git-scm.com/book) - *Pro Git* 图书的在线版本。作者是 Scott Chacon。由 Apress 出版。
+ [Git Immersion](http://gitimmersion.com/)，这是一场 try-it-yourself导览游，带你了解使用 Git 的基础知识。由 Neo Innovation, Inc. 发布。
+ [Git 参考](https://git-scm.com/docs) - 一个在线快速参考，也可用作更深入的 Git 教程。由 GitHub团队发布。
+ [Git 备忘单](https://github.com/github/training-kit/blob/master/downloads/github-git-cheat-sheet.md) - 包含基本 Git 命令的语法。由 GitHub 团队发布。
+ [Git 袖珍指南](https://www.amazon.com/Git-Pocket-Guide-Richard-Silverman/dp/1449325866)。作者是 Richard E. Silverman。由 O'Reilly Media, Inc. 发布。