Git 和 入门 AWS CodeCommit - AWS CodeCommit
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Git 和 入门 AWS CodeCommit

如果您初次使用 Git 和 CodeCommit,本教程可帮助您学习一些简单的入门命令。如果您已熟悉 Git,可以跳过本教程并转到 开始使用 CodeCommit .

在本教程中,您将创建一个表示 的本地副本的存储库CodeCommit 存储库,我们将该存储库称为 本地存储库.

创建本地存储库后,您可以对其进行一些更改。然后将更改发送 (推送) 到 CodeCommit 存储库.

您还可以模拟团队环境:两名用户相互独立地向其 本地存储库 提交更改,并将他们的更改推送到 CodeCommit 存储库. 然后,用户将更改从 CodeCommit 存储库 提取到各自的 本地存储库 中,查看另一名用户做出的更改。

您还可以在 中创建分支和标签,并管理某些访问权限。CodeCommit 存储库.

完成本教程后,您应已完成有关 Git 和 CodeCommit 核心概念的充分练习,可以开始在自己的项目中使用它们了。

完成先决条件和设置,包括:

  • 向 IAM 用户分配权限。

  • 设置 CodeCommit 以使用 HTTPS、SSH 或 git-remote-codecommit 连接到存储库。 有关这些选择的更多信息,请参阅对 进行设置AWS CodeCommit

  • 如果您想要使用命令行或终端完成所有操作,包括创建存储库,则还需要配置 AWS CLI

步骤 1:创建 CodeCommit 存储库

在本步骤中,您将使用 CodeCommit 控制台创建存储库。

如果您已有要使用的 CodeCommit 存储库,则可跳过该步骤。

注意

根据您的使用情况,您可能需要为创建或访问存储库付费。有关更多信息,请参阅 CodeCommit 产品信息页面上的定价

创建 CodeCommit 存储库

  1. 通过以下网址打开 CodeCommit 控制台:https://console.www.amazonaws.cn/codesuite/codecommit/home

  2. 可使用区域选择器选择要创建存储库的 AWS 区域。有关更多信息,请参阅区域和 Git 连接终端节点

  3. 存储库页面上,选择创建存储库

  4. Create repository (创建存储库) 页面上的 Repository name (存储库名称)中,输入存储库的名称(例如,MyDemoRepo)。

    注意

    存储库名称区分大小写,且不能超过 100 个字符。有关更多信息,请参阅限制

  5. (可选)在描述中,输入描述(例如,My demonstration repository)。这可以帮助您及其他用户了解存储库的用途。

  6. (可选)选择Add tag (添加标签),向您的存储库添加一个或多个存储库标签(自定义属性标签,可帮助您组织和管理您的 AWS 资源)。有关更多信息,请参阅标记中的存储库 AWS CodeCommit

  7. (可选)如果该存储库将包含 Java 或 Python 代码,并且您希望让 分析该代码,请选择 Amazon CodeGuru ReviewerEnable for Java and Python (为 Java 和 Python 启用 Amazon S3 Amazon CodeG)CodeGuru Reviewer。CodeGuru Reviewer 使用多个机器学习模型查找代码缺陷,并在拉取请求中自动提出改进和修复建议。有关更多信息,请参阅Amazon CodeGuru Reviewer 用户指南。

  8. 选择创建

注意

本教程中的剩余步骤使用 MyDemoRepo 作为 CodeCommit 存储库.的名称。如果您选择其他名称,请确保在本教程中通篇使用它。

有关创建存储库 (包括如何从终端或命令行创建存储库) 的更多信息,请参阅创建 存储库.

步骤 2:创建本地存储库

在此步骤中,需要在本地计算机上设置一个本地存储库,以连接到您的存储库。为此,请在本地计算机上选择一个代表本地存储库的目录,然后使用 Git 在该目录中克隆并初始化一个空 CodeCommit 存储库的副本,并指定用于为您的提交添加注释的用户名和电子邮件地址。

  1. 通过以下网址打开 CodeCommit 控制台:https://console.www.amazonaws.cn/codesuite/codecommit/home

  2. 在区域选择器中,选择已创建存储库的 AWS 区域。存储库特定于 AWS 区域。有关更多信息,请参阅区域和 Git 连接终端节点

  3. 从列表中找到您要连接的存储库并选择此存储库。选择 Clone URL (克隆 URL),然后选择克隆或连接到存储库时要使用的协议。此时将复制克隆 URL。

    • 如果您对 IAM 用户使用 Git 凭证或使用 AWS CLI 随附的凭证辅助程序,请复制 HTTPS URL。

    • 如果您在本地计算机上使用 git-remote-codecommit 命令,请复制 HTTPS (GRC) URL。

    • 如果您对 IAM 用户使用 SSH 公有密钥/私有密钥对,请复制 SSH URL。

    注意

    如果看到 Welcome (欢迎) 页面,而不是存储库列表,说明在您已登录的 AWS 区域中没有存储库与您的 AWS 账户关联。要创建存储库,请参阅创建 AWS CodeCommit 存储库或按照Git 和 入门 CodeCommit教程中的步骤进行操作。

  4. (可选) 我们建议您配置本地 Git 客户端以main用作存储库的默认分支的名称。这是在本指南的所有示例中用于默认分支的名称。如果您在 控制台中进行第一次提交,它也是CodeCommit使用的默认分支名称。运行以下命令以全局配置系统的默认分支名称:

    git config --global init.defaultBranch main

    如果您希望对所有存储库使用不同的默认分支名称,请将 main 替换为您的首选名称。本教程假定您的默认分支名为 main。

    如果要对不同的存储库使用不同的默认分支名称,您可以在本地 (--local) 而不是全局 (--global) 设置此属性。

  5. 在终端或命令提示符处,使用 git clone 命令克隆存储库并提供您在步骤 3 中复制的克隆 URL。您的克隆 URL 取决于您使用的协议和配置。例如,如果您将 HTTPS 与 Git 凭证结合使用来克隆名为 的存储库 MyDemoRepo 美国东部(俄亥俄州) 区域中的 :

    git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

    如果您将 HTTPS 与 结合使用:git-remote-codecommit:

    git clone codecommit://MyDemoRepo my-demo-repo

    如果您正在使用 SSH:

    git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
    注意

    如果您在尝试克隆存储库时看到错误,则可能尚未完成本地计算机所需的设置。有关更多信息,请参阅对 进行设置AWS CodeCommit .

步骤 3:创建您的第一个提交

在此步骤中,您将在中创建第一个提交。本地存储库. 为此,您需要在中创建两个示例文件。本地存储库. 使用 Git 暂存更改,然后将更改提交到您的本地存储库.

  1. 使用文本编辑器在您的目录中创建以下两个示例文本文件。将文件命名为 cat.txtdog.txt

    cat.txt ------- The domestic cat (Felis catus or Felis silvestris catus) is a small, usually furry, domesticated, and carnivorous mammal.

    dog.txt ------- The domestic dog (Canis lupus familiaris) is a canid that is known as man's best friend.
  2. 运行 git config 以添加占位符表示的用户名和电子邮件地址 your-user-nameyour-email-address 本地存储库。这样,就可以更轻松地标识您所做的提交:

    git config --local user.name "your-user-name" git config --local user.email your-email-address
  3. 如果您在创建本地存储库时未全局设置默认分支名称,请运行以下命令将默认分支名称设置为 main

    git config --local init.defaultBranch main
  4. 运行 git add 暂存更改:

    git add cat.txt dog.txt
  5. 运行 git commit 提交更改:

    git commit -m "Added cat.txt and dog.txt"
    提示

    要查看刚刚创建的提交的详细信息,请运行 git log.

步骤 4:推送您的第一个提交

在此步骤中,需要将 本地存储库 中的提交推送到 CodeCommit 存储库.

运行 git push 可通过 Git 用于 CodeCommit 存储库 (origin) 的默认远程名称从 本地存储库 ( 的默认分支 (main):) 推送提交:

git push -u origin main
提示

将文件推送到 CodeCommit 存储库后,可以使用 CodeCommit 控制台查看内容。有关更多信息,请参阅浏览存储库中的文件.

步骤 5:共享CodeCommit存储库并推送和拉取另一个提交

在此步骤中,您将与团队成员共享有关 CodeCommit 存储库的信息。团队成员利用这些信息获取本地副本,对其进行一些更改,然后将修改后的本地副本推送到 CodeCommit 存储库. 然后,您将这些更改从 CodeCommit 存储库 提取到 本地存储库.

在本教程中,您可以通过使用 Git 另外创建一个目录 (独立于您在步骤 2. 中创建的目录) 来模拟其他用户。(此目录通常位于不同的计算机上。) 此新目录是 的副本CodeCommit 存储库。您对现有目录或该新目录所做的任何更改都是独立进行的。确定对这些目录所做的更改的唯一方法是从 提取。CodeCommit 存储库.

我们将现有目录称作本地存储库,将新目录称作共享存储库. (即使它们位于同一台本地计算机上)。

在新目录中,您获取 的一个独立副本。CodeCommit 存储库. 随后,添加一个新的示例文件,将更改提交到共享存储库,然后将共享存储库中的提交推送到您的 CodeCommit 存储库.

最后,将存储库中的更改提取到本地存储库,然后浏览它以查看其他用户提交的更改。

  1. 切换到 /tmp 目录或 c:\temp 目录。

  2. 运行 git clone 在共享存储库中提取一份存储库副本:

    对于 HTTPS:

    git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo

    对于将 HTTPS 与 一起使用:git-remote-codecommit:

    git clone codecommit://MyDemoRepo shared-demo-repo

    对于 SSH:

    git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo
    注意

    在 Windows 操作系统上使用 SSH 克隆存储库时,您可能需要将 SSH 密钥 ID 添加到连接字符串,如下所示:

    git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

    有关更多信息,请参阅适用于 Windows 上的 SSH 连接.

    在该命令中,MyDemoRepo 是 CodeCommit 存储库.的名称。shared-demo-repo 是 Git 在 目录/tmp或 目录中创建的目录的名称c:\temp。Git 创建该目录后,会向 shared-demo-repo 目录中提取一份存储库副本。

  3. 切换到 shared-demo-repo 目录:

    (For Linux, OS X, or Unix) cd /tmp/shared-demo-repo (For Windows) cd c:\temp\shared-demo-repo
  4. 运行 git config 以添加占位符表示的另一个用户名和电子邮件地址 other-user-nameother-email-address。 这样,就可以更轻松地识别其他用户的提交:

    git config --local user.name "other-user-name" git config --local user.email other-email-address
  5. 使用文本编辑器在 shared-demo-repo 目录中创建以下示例文本文件。将文件命名为 horse.txt:

    horse.txt ------- The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus.
  6. 运行 git add 将更改暂存到共享存储库:

    git add horse.txt
  7. 运行 git commit 将更改提交到共享存储库:

    git commit -m "Added horse.txt"
  8. 运行 git push 可通过 Git 用于 CodeCommit 存储库 (origin) 的默认远程名称从 本地存储库 ( 的默认分支 (main):) 推送初始提交:

    git push -u origin main
  9. 切换到 本地存储库 并运行 git pull 将共享存储库对 本地存储库 所做的提交提取到 CodeCommit 存储库. 然后运行 git log 查看从共享存储库发起的提交。

步骤 6:创建和共享分支

在此步骤中,需要在 本地存储库 中创建一个分支,进行一些更改,然后将分支推送到 CodeCommit 存储库. 接下来,将该分支从 提取到共享存储库。CodeCommit 存储库.

A 分支 允许您独立开发存储库内容的不同版本(例如,在不影响团队成员工作的情况下处理新的软件功能)。当该功能稳定时,可以将分支合并到软件的更稳定的分支中。

使用 Git 创建分支,然后将其指向您的第一个提交。使用 Git 将分支推送到 CodeCommit 存储库. 然后,切换到您的共享存储库,使用 Git 将新分支提取到共享本地存储库并查看该分支。

  1. 在 本地存储库 中运行 git checkout,指定分支的名称(例如,MyNewBranch)和您在 本地存储库. 中的第一个提交的 ID。

    如果不知道提交 ID,可以运行 git log 获取它。确保提交使用的是您的用户名和电子邮件地址,而不是其他用户的用户名和电子邮件地址。这是为了模拟 main 是 CodeCommit 存储库 的稳定版本,而 MyNewBranch 是用于某种新的、相对不稳定的功能的分支:

    git checkout -b MyNewBranch commit-ID
  2. 运行 git push 将新分支从 本地存储库 发送到 CodeCommit 存储库:

    git push origin MyNewBranch
  3. 现在,将分支提取到共享存储库并检查结果:

    1. 切换到共享存储库目录 (shared-demo-repo).

    2. 提取新分支 (git fetch origin).

    3. 确认已提取分支(git branch --all 显示存储库所有分支的列表)。

    4. 切换到新分支 (git checkout MyNewBranch).

    5. 通过运行 MyNewBranch 或 确认您已切换到git status分支git branch。 输出将显示您所在的分支。在本示例中,输出应为 MyNewBranch.

    6. 查看分支中的提交列表 (git log).

    以下是要调用的 Git 命令的列表:

    git fetch origin git branch --all git checkout MyNewBranch git branch or git status git log
  4. 切换回 main 分支,查看其提交列表。Git 命令应如下所示:

    git checkout main git log
  5. 切换到 main 中的 本地存储库. 分支。您可以运行 git statusgit branch。 输出将显示您所在的分支。在这种情况下,它应该是 main。 Git 命令应如下所示:

    git checkout main git branch or git status

步骤 7:创建和共享标签

在此步骤中,需要在 本地存储库 中创建两个标签,将标签与提交相关联,然后将标签推送到 CodeCommit 存储库. 接下来,将更改从 CodeCommit 存储库提取到共享存储库。

A 标签 用于为提交 (或分支,甚至是另一个标签) 提供人类可读的名称。例如,如果要将提交标记为 ,则可以执行此操作v2.1。 提交、分支或标签可以关联任意数量的标签,但单个标签只能与一个提交、分支或标签关联。在本教程中,将一个提交标记为 release,将另一个提交标记为 beta.

您使用 Git 创建标签,将 release 标签指向您进行的第一个提交,并将 beta 标签指向其他用户进行的提交。然后使用 Git 将标签推送到 CodeCommit 存储库. 接下来,切换到您的共享存储库,使用 Git 将标签提取到共享本地存储库并查看标签。

  1. 在 本地存储库 中运行 git tag,指定新标签的名称(例如,release)和您在 本地存储库. 中的第一个提交的 ID。

    如果不知道提交 ID,可以运行 git log 获取它。确保提交使用的是您的用户名和电子邮件地址,而不是其他用户的用户名和电子邮件地址。这是模拟您的提交是 的稳定版本的情况:CodeCommit 存储库:

    git tag release commit-ID

    再次运行 git tag,将其他用户的提交与 beta 标签关联。这是模拟该提交用于某种新的、相对不稳定的功能的情况:

    git tag beta commit-ID
  2. 运行 git push --tags 以将标签发送到 CodeCommit 存储库.

  3. 现在,将标签提取到共享存储库并检查结果:

    1. 切换到共享存储库目录 (shared-demo-repo).

    2. 提取新标签 (git fetch origin).

    3. 确认已提取标签(git tag 显示存储库的标签列表)。

    4. 查看有关每个标签(git log releasegit log beta).)的信息。

    以下是要调用的 Git 命令的列表:

    git fetch origin git tag git log release git log beta
  4. 也请尝试在本地存储库中执行该操作:

    git log release git log beta

步骤 8:设置访问权限

在此步骤中,需要向用户授予将共享存储库与 同步的权限。CodeCommit 存储库. 此为可选步骤。建议有兴趣了解如何控制对 CodeCommit 存储库的访问权限的用户完成此步骤。

为实现这一目的,您可以使用 IAM 控制台创建 IAM 用户,默认情况下,该用户没有将共享存储库与 CodeCommit 存储库. 同步的权限。您可以运行 git pull 来验证这一点。如果新用户没有同步权限,则该命令不起作用。然后,返回到 IAM 控制台并应用允许用户使用 的策略git pull。 同样,您可以运行 git pull 来验证这一点。

此步骤假定您具有在 IAM 账户中创建 AWS 用户的权限。如果您不具备这些权限,则无法执行此步骤中的过程。请跳到步骤 9:清除并清理学习教程时所使用的资源。

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

    请务必用您在中使用的用户名和密码登录。设置 .

  2. 在导航窗格中选择用户,然后选择创建新用户.

  3. 在第一个输入用户名称框中,输入示例用户名(例如,JaneDoe-CodeCommit). 选中为每个用户生成访问密钥框,然后选择创建.

  4. 选择显示用户安全凭证. 记下访问密钥 ID 和秘密访问密钥,或选择 Download Credentials.

  5. 按照适用于使用 Git 凭证的 HTTPS 用户中的说明进行操作以生成并提供 IAM 用户的凭证。

    如果需要使用 SSH,请按照 SSH 和 Linux, OS X, or Unix:为 Git 和 CodeCommit 设置公有密钥和私有密钥步骤 3: 为 Git 和 CodeCommit 设置公有密钥和私有密钥中的说明操作,设置用户及公钥和私钥。

  6. 运行 git pull。 此时将出现以下错误:

    对于 HTTPS:

    fatal: unable to access 'https://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403.

    对于 SSH:

    fatal: unable to access 'ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403.

    出现该错误的原因是新用户没有将共享存储库与 同步的权限。CodeCommit 存储库.

  7. 返回到 IAM 控制台。在导航窗格中选择 Policies,然后选择 Create Policy. (如果 Get Started 按钮出现,选择此按钮,然后选择 Create Policy.)

  8. Create Your Own Policy 旁,选择 Select.

  9. 策略名称框中,输入名称(例如 CodeCommitAccess-GettingStarted).

  10. Policy Document (策略文档) 框中,输入以下内容,它允许 用户从与该 IAM 用户关联的任何存储库中拉取IAM内容:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ] }

    提示

    如果您希望 IAM 用户能够将提交推送到与 IAM 用户关联的任何存储库,请改为输入:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" } ] }

    有关您可以向用户提供的其他 CodeCommit 操作及资源权限的信息,请参阅 的身份验证和访问控制AWS CodeCommit.

  11. 在导航窗格中,选择 Users.

  12. 选择要附加策略的示例用户名(例如,JaneDoe-CodeCommit

  13. 选择 Permissions 选项卡。

  14. Managed Policies 中,选择 Attach Policy.

  15. 选择您刚刚创建的 CodeCommitAccess-GettingStarted 策略,然后选择 Attach Policy (附加策略).

  16. 运行 git pull。 此时,命令应有效,应显示 Already up-to-date 消息。

  17. 如果您使用 HTTPS,请切换到您的原始 Git 凭证;或者,如果使用 git-remote-codecommit,请切换到您的常用配置文件。有关更多信息,请参阅为使用 Git 凭证的 HTTPS 用户设置HTTPS连接的设置步骤 AWS CodeCommit 带git-remote-codecommit.中的说明。

    如果使用的是 SSH,请切换到您的原始密钥。有关更多信息,请参阅 SSH 和 Linux, OS X, or Unix:为 Git 和 CodeCommit 设置公有密钥和私有密钥步骤 3: 为 Git 和 CodeCommit 设置公有密钥和私有密钥.

本教程到此结束。

步骤 9:清除

在此步骤中,将删除您在本教程中使用的 CodeCommit 存储库,以免产生存储空间使用费。

另外还需要删除您本地计算机上的 本地存储库 和共享存储库,删除 CodeCommit 存储库. 后就不需要它们了。

重要

删除该存储库后,您无法将其克隆到任何本地存储库或共享存储库。也无法再从任何本地存储库或共享存储库向其推送数据或从其提取数据。此操作无法撤消。

删除 CodeCommit 存储库 (控制台)

  1. 通过以下网址打开 CodeCommit 控制台:https://console.www.amazonaws.cn/codesuite/codecommit/home

  2. Dashboard (控制面板) 页面的存储库列表中,选择 MyDemoRepo.

  3. 在导航窗格中,选择 Settings.

  4. Settings 页面上的 Delete repository 中,选择 Delete repository.

  5. Type the name of the repository to confirm deletion (键入存储库名称以确认删除) 旁边的框中,输入 MyDemoRepo,然后选择 Delete (删除).

删除 CodeCommit 存储库 (AWS CLI)

运行 delete-repository 命令:

aws codecommit delete-repository --repository-name MyDemoRepo

删除本地存储库和共享存储库

对于 Linux, OS X, or Unix:

cd /tmp rm -rf /tmp/my-demo-repo rm -rf /tmp/shared-demo-repo

对于 Windows:

cd c:\temp rd /s /q c:\temp\my-demo-repo rd /s /q c:\temp\shared-demo-repo