AWS CodeCommit
用户指南 (API 版本 2015-04-13)

什么是 AWS CodeCommit?

AWS CodeCommit 是由 Amazon Web Services 托管的版本控制服务,可让您在云中私下存储和管理资产(如文档、源代码和二进制文件)。有关 CodeCommit 定价的信息,请参阅定价

注意

CodeCommit 适用于许多合规性计划。有关 AWS 和合规性工作的详细信息,请参阅 AWS 按合规性计划提供的范围内服务

这是一项符合 HIPAA 要求的服务。有关 AWS、《1996 年健康保险可携性与责任法》(HIPAA) 以及使用 AWS 服务处理、存储和传输受保护的医疗信息 (PHI) 的更多信息,请参阅 HIPAA 概述

有关此服务与 ISO 27001(一项指定安全管理最佳实践的安全管理标准)的信息,请参阅 ISO 27001 概述

有关此服务和支付卡行业数据安全标准 (PCI DSS) 的信息,请参阅 PCI DSS 概述

有关此服务和美国联邦信息处理标准 (FIPS) 第 140-2 版美国政府标准(其中规定了对保护敏感信息的加密模块的安全要求)的信息,请参阅美国联邦信息处理标准 (FIPS) 第 140-2 版概览 Git 连接终端节点

CodeCommit 简介

CodeCommit 是一项安全的、可高度扩展的托管型源代码控制服务,可用于托管私有 Git 存储库。CodeCommit 使您无需管理自己的源代码控制系统,并且再也不必担心基础设施的扩展了。您可以使用 CodeCommit 存储从代码到二进制文件的一切内容。它支持 Git 的标准功能,可与您现有的基于 Git 的工具无缝协作。

借助 CodeCommit,您可以:

  • 从由 AWS 提供的完全托管的服务中受益。CodeCommit 可提供较高的服务可用性与持久性,并能消除管理自己的硬件和软件的开销。没有需要预置和扩展的硬件,也没有需要安装、配置和更新的服务器软件。

  • 安全地存储代码。CodeCommit 存储库将进行静态加密和传输中加密。

  • 协作处理代码。 CodeCommit 存储库支持拉取请求,使用户可以相互查看和评论各自的代码更改,然后再将其合并到分支;并且支持通过通知功能自动向用户发送有关拉取请求和评论的电子邮件等。

  • 轻松扩展您的版本控制项目。CodeCommit 存储库可向上扩展以满足您的发展需要。该服务能够处理具有大量文件或分支、大尺寸文件及冗长版本历史记录的存储库。

  • 随时存储任何内容。CodeCommit 不限制您的存储库大小,也不限制可存储的文件类型。

  • 与其他 AWS 和第三方服务集成。CodeCommit 将您的存储库放置在靠近您托管在 AWS 云中的其他生产资源的位置,这有助于提高开发周期的速度和频率。它与 IAM 集成,并且可与其他 AWS 服务结合使用以及与其他存储库并行使用。有关更多信息,请参阅产品和服务与 AWS CodeCommit 的集成

  • 轻松地从远程存储库迁移文件。您可以将任意 Git 存储库迁移到 CodeCommit。

  • 使用您已知的 Git 工具。CodeCommit 支持 Git 命令以及自己的 AWS CLI 命令和 API。

CodeCommit、Git,选择正确的 AWS 服务以满足您的需求

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

使用案例 描述 要考虑的其他服务
经常更改的大文件 Git 使用增量编码来存储各个文件版本之间的差异。例如,如果您更改文档中的几个单词,Git 将只存储这些已更改的单词。如果您的文件或对象的大小超过 5 MB,并且进行了许多更改,则 Git 可能需要重新构造一个很大的增量差异链。当这些文件随着时间的推移而增长时,这会在本地计算机和 CodeCommit 中消耗越来越多的计算资源。 要对大型文件进行版本控制,请考虑 Amazon Simple Storage Service (Amazon S3)。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的使用版本控制
数据库 随着时间的推移,Git 存储库会变得越来越大。由于版本控制将跟踪所有更改,因此,任何更改都将增大您的存储库。换句话说,在提交数据时,即使删除了提交中的数据,也会将数据添加到存储库中。随着时间的推移,需要处理和传输的数据会越来越多,Git 的速度将变慢。这对数据库使用案例尤其不利。Git 不是作为数据库设计的。 要创建和使用具有一致性能的数据库(而不管大小如何),请考虑 Amazon DynamoDB。有关更多信息,请参见 Amazon DynamoDB 入门指南
审核跟踪 通常,审核跟踪会保持很长一段时间,并且由系统进程以非常频繁的节奏连续生成。Git 旨在安全地存储由开发人员组在开发周期中生成的源代码。快速更改的存储库会不断存储以编程方式生成的系统更改,但性能会随着时间的推移而降低。 要存储审核跟踪,请考虑 Amazon Simple Storage Service (Amazon S3)。

要审核 AWS 活动(具体取决于您的使用案例),请考虑使用 AWS CloudTrailAWS ConfigAmazon CloudWatch

备份 Git 是为开发人员编写的版本源代码而设计的。您可以将提交推送到两个远程存储库(包括一个 CodeCommit 存储库)作为备份策略。但是,Git 并不是设计用来处理计算机文件系统、数据库转储或类似备份内容的备份。这样做可能会降低系统速度,增加克隆和推送存储库所需的时间。 有关如何备份到 AWS 云的信息,请参阅备份和还原
大量分支或引用 当 Git 客户端推送或提取存储库数据时,即使您只对单个分支感兴趣,远程服务器也必须发送所有分支和引用(如标签)。如果您有数千个分支和引用,这可能需要一些时间来处理和发送(打包协商)并导致明显缓慢的存储库响应。您拥有的分支和标签越多,此过程所需的时间就越长。我们建议使用 CodeCommit,但需删除不再需要的分支和标签。 要分析 CodeCommit 存储库中的引用数以确定可能不需要的引用,您可使用下列命令之一:
  • Linux, macOS, or Unix,或 Windows 上的 Bash 仿真器:

    git ls-remote | wc-l
  • Powershell:

    git ls-remote | Measure-Object -line

CodeCommit 是如何运行的?

使用基于 Git 的存储库的用户会对 CodeCommit 感到很熟悉,甚至那些对此不熟悉的用户也应会发现过渡到 CodeCommit 相当简单。CodeCommit 提供了一个控制台,可以很方便地创建存储库并列出现有的存储库和分支。用户只需执行几个简单的步骤,就能找到存储库的相关信息、将其克隆到自己的计算机、创建可保存个人更改的本地存储库,然后将更改推送到 CodeCommit 存储库。用户可以在本地计算机上使用命令行或使用基于 GUI 的编辑器执行作业。

下图显示了使用开发计算机、AWS CLI 或 CodeCommit 控制台和 CodeCommit 服务创建和管理存储库的过程:


        典型的 CodeCommit 工作流程
  1. 使用 AWS CLI 或 CodeCommit 控制台创建一个 CodeCommit 存储库。

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

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

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

您可以使用 AWS CLI 或 CodeCommit 控制台跟踪和管理自己的存储库。

CodeCommit 与 Amazon S3 中的文件版本控制有何区别?

CodeCommit 已针对团队软件开发进行优化。它可管理多个文件之间的多个更改批次(可与其他开发人员所做的更改并行出现)。Amazon S3 版本控制支持恢复过去的文件版本,但不注重软件开发团队所需的协作式文件跟踪功能。

如何开始使用 CodeCommit?

开始使用 CodeCommit:

  1. 按照设置 中的步骤准备您的开发计算机。

  2. 按照入门中的一个或多个教程中的步骤操作。

  3. 在 CodeCommit 中创建版本控制项目或者将版本控制项目迁移到 CodeCommit。

哪里可以找到有关 Git 的更多信息?

如果您还不知道它,应该先了解如何使用 Git。下面是一些有用的资源:

  • Pro Git - Pro Git 图书的在线版本。作者是 Scott Chacon。由 Apress 出版。

  • Git Immersion - 一个以实验为本的探索之旅,旨在指导您掌握使用 Git 的基础知识。由 Neo Innovation, Inc. 发布。

  • Git 参考 - 一个在线快速参考,也可用作更深入的 Git 教程。由 GitHub 团队发布。

  • Git 备忘单 - 包含基本 Git 命令的语法。由 GitHub 团队发布。

  • Git 袖珍指南。作者是 Richard E. Silverman。由 O'Reilly Media, Inc. 发布。