本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用 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 控制台https://console.aws.amazon.com/codesuite/codecommit/home
. -
使用区域选择器选择AWS 区域在哪里创建存储库。有关更多信息,请参阅 区域和 Git 连接端点。
-
在存储库页面上,选择创建存储库。
-
在 Create repository (创建存储库) 页面上的 Repository name (存储库名称)中,输入存储库的名称(例如,
MyDemoRepo
)。注意 存储库名称区分大小写,且不能超过 100 个字符。有关更多信息,请参阅限制。
-
(可选)在描述中,输入描述(例如,
My demonstration repository
)。这可以帮助您及其他用户了解存储库的用途。 -
(可选)选择Add tag (添加标签),向您的存储库添加一个或多个存储库标签(自定义属性标签,可帮助您组织和管理您的 AWS 资源)。有关更多信息,请参阅 在中标记存储库AWS CodeCommit。
(可选)选择为 Java 和 Python 启用亚马逊 CodeGuru Reviewer这个存储库是否包含 Java 或 Python 代码,并且你想让 CodeGuru Reviewer 分析该代码。CodeGuru Reviewer 使用多种机器学习模型来查找代码缺陷,并自动提出拉取请求的改进和修复建议。有关更多信息,请参阅 Amazon CodeGuru Reviewer 用户指南。
-
选择创建。
本教程中的剩余步骤使用MyDemoRepo
为了获取 CodeCommit 存储库的名称。如果您选择其他名称,请确保在本教程中通篇使用它。
有关创建存储库 (包括如何从终端或命令行创建存储库) 的更多信息,请参阅创建 存储库。
第 2 步:创建本地存储库
在此步骤中,需要在本地计算机上设置一个本地存储库,以连接到您的存储库。为此,请在本地计算机上选择一个代表本地存储库的目录,然后使用 Git 在该目录中克隆并初始化一个空 CodeCommit 存储库的副本,并指定用于为您的提交添加注释的用户名和电子邮件地址。
从打开 CodeCommit 控制台https://console.aws.amazon.com/codesuite/codecommit/home
. -
在区域选择器中,选择AWS 区域存储库的创建位置。存储库特定于AWS 区域. 有关更多信息,请参阅 区域和 Git 连接端点。
-
从列表中找到您要连接的存储库并选择此存储库。选择 Clone URL (克隆 URL),然后选择克隆或连接到存储库时要使用的协议。此时将复制克隆 URL。
如果您对 IAM 用户使用 Git 凭证或使用随附的凭证辅助程序,请复制 HTTPS URL。AWS CLI.
如果您在本地计算机上使用 git-remote-codecommit 命令,请复制 HTTPS (GRC) URL。
如果您对 IAM 用户使用 SSH 公有密钥/私有 key pair,请复制 SSH URL。
注意 如果你看到欢迎使用页面而不是存储库列表,没有存储库与您的关联。AWS中的账户AWS 区域登录到的位置。要创建存储库,请参阅创建AWS CodeCommit存储库或按照Git 和 CodeCommit 入门教程中的步骤进行操作。
-
(可选) 建议您将本地 Git 客户端配置成使用。
main
作为存储库默认分支的名称。这是本指南所有示例中用于默认分支的名称。如果你在控制台中进行第一次提交,它也与 CodeCommit 使用的默认分支名称相同。运行以下命令为系统配置默认分支名称:git config --global init.defaultBranch main
如果您希望对所有仓库使用不同的默认分支名称,请替换
main
使用您的首选姓名称。本教程假定您的默认分支被命名为主要的.如果要为不同的仓库使用不同的默认分支名称,则可以在本地设置此属性(--local)而不是全局(--global)。
-
在终端或命令提示符处,使用git clone命令并提供您在步骤 3 中复制的克隆 URL。克隆 URL 取决于您使用的协议和配置。例如,如果您对 Git 凭证使用 HTTPS 克隆名为的存储库。
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 暂存更改,然后将更改提交到您的本地存储库。
-
使用文本编辑器在您的目录中创建以下两个示例文本文件。将这两个文件命名为
cat.txt
和dog.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.
-
运行 git config 以将占位符
your-user-name
和your-email-address
表示的用户名和电子邮件地址添加到本地存储库。这样,就可以更轻松地标识您所做的提交:git config --local user.name "
your-user-name
" git config --local user.emailyour-email-address
-
如果在创建本地存储库时没有全局设置默认分支名称,请运行以下命令将默认分支名称设置为
main
:git config --local init.defaultBranch main
-
运行 git add 暂存更改:
git add cat.txt dog.txt
-
运行 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 存储库。
最后,需要将存储库中的更改提取到本地存储库,然后浏览它以查看另一名用户提交的更改。
-
切换到
/tmp
目录或c:\temp
目录。 -
运行 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
目录中提取一份存储库副本。 -
切换到
shared-demo-repo
目录:(For Linux, macOS, or Unix)
cd /tmp/shared-demo-repo(For Windows)
cd c:\temp\shared-demo-repo -
运行 git config 以添加由占位符
other-user-name
和other-email-address
表示的其他用户名和电子邮件地址。这样,就可以更轻松地标识其他用户进行的提交:git config --local user.name "
other-user-name
" git config --local user.emailother-email-address
-
使用文本编辑器在
shared-demo-repo
目录中创建以下示例文本文件。将该文件命名为horse.txt
:horse.txt ------- The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus.
-
运行 git add 将更改暂存到共享存储库:
git add horse.txt
-
运行 git commit 将更改提交到共享存储库:
git commit -m "Added horse.txt"
-
运行git push运行可通过 Git 用于 CodeCommit 存储库的默认远程名称推送初始提交(
origin
),来自本地仓库中的默认分支(main
):git push -u origin main
-
切换回本地存储库并运行git pull将共享存储库对所做的提交提取到您的本地存储库。然后运行 git log 查看从共享存储库发起的提交。
第 6 步:创建和共享分支
在此步骤中,需要在本地存储库中创建一个分支,进行一些更改,然后将分支推送到您的 CodeCommit 存储库。接下来,将该分支从 CodeCommit 存储库提取到共享存储库。
分支允许您独立开发存储库内容的不同版本。例如,在不影响团队成员工作的情况下使用新的软件功能。当该功能稳定时,可以将分支合并到软件的更稳定的分支中。
使用 Git 创建分支,然后将其指向您的第一个提交。您可以使用 Git 将分支推送到 CodeCommit 存储库。接下来,切换到您的共享存储库,使用 Git 将新分支提取到共享本地存储库并查看该分支。
-
从你本地的回购库中,运行git checkout,指定分支的名称(例如,
MyNewBranch
) 和您在本地存储库中的第一个提交的 ID。如果不知道提交 ID,可以运行 git log 获取它。确保提交使用的是您的用户名和电子邮件地址,而不是其他用户的用户名和电子邮件地址。这是为了模拟
main
是 CodeCommit 存储库的稳定版本,MyNewBranch
是用于某种新的、相对不稳定的功能的分支:git checkout -b MyNewBranch
commit-ID
-
运行git push将本地存储库中的新分支从发送到 CodeCommit 存储库:
git push origin MyNewBranch
-
现在,将分支提取到共享存储库并检查结果:
-
切换到共享存储库目录(共享演示存储库)。
-
提取新分支 (git fetch origin)。
-
确认已提取分支(git branch --all 显示存储库所有分支的列表)。
-
切换到新分支 (git checkout MyNewBranch)。
-
通过运行 git status 或 git branch 确认您已切换到
MyNewBranch
分支。输出将显示您所在的分支。在本示例中,输出应为MyNewBranch
。 -
查看分支中的提交列表 (git log)。
以下是要调用的 Git 命令的列表:
git fetch origin git branch --all git checkout MyNewBranch git branch
or
git status git log -
-
切换回
main
分支,查看其提交列表。Git 命令应如下所示:git checkout main git log
-
切换回
main
在本地存储库中的分支。您可以运行 git status 或 git branch。输出将显示您所在的分支。在本示例中,输出应为main
。Git 命令应如下所示:git checkout main git branch
or
git status
步骤 7:创建和共享标签
在此步骤中,需要在本地存储库中创建两个标签,将标签与提交相关联,然后将标签推送到您的 CodeCommit 存储库。接下来,将更改从 CodeCommit 存储库提取到共享存储库。
标签用于给提交 (或分支,甚至是另一个标签) 起一个易于阅读的名称。例如,如果要将提交标记为 v2.1
,则可如此操作。提交、分支或标签可以关联任意数量的标签,但一个标签只能关联一个提交、分支或标签。在本教程中,将一个提交标记为 release
,将另一个提交标记为 beta
。
您使用 Git 创建标签,将 release
标签指向您进行的第一个提交,并将 beta
标签指向其他用户进行的提交。然后使用 Git 将标签推送到 CodeCommit 存储库。接下来,切换到您的共享存储库,使用 Git 将标签提取到共享本地存储库并查看标签。
-
从你本地的回购库中,运行git tag,指定新标签的名称 (
release
) 和您在本地存储库中的第一个提交的 ID。如果不知道提交 ID,可以运行 git log 获取它。确保提交使用的是您的用户名和电子邮件地址,而不是其他用户的用户名和电子邮件地址。这是模拟您的提交是 CodeCommit 存储库的稳定版本的情况:
git tag release
commit-ID
再次运行 git tag,将其他用户的提交与
beta
标签关联。这是模拟该提交用于某种新的、相对不稳定的功能的情况:git tag beta
commit-ID
-
运行git push --tags将标签发送到 CodeCommit 存储库。
-
现在,将标签提取到共享存储库并检查结果:
-
切换到共享存储库目录(共享演示存储库)。
-
提取新标签 (git fetch origin)。
-
确认已提取标签(git tag 显示存储库的标签列表)。
-
查看有关每个标签(git log release 和 git log beta)的信息。
以下是要调用的 Git 命令的列表:
git fetch origin git tag git log release git log beta
-
-
也请尝试在本地存储库中执行该操作:
git log release git log beta
第 8 步:设置访问权限
在此步骤中,需要向用户授予将共享存储库与 CodeCommit 存储库同步的权限。此为可选步骤。建议有兴趣了解如何控制对 CodeCommit 存储库的访问权限的用户完成此步骤。
为实现这一目的,您可以使用 IAM 控制台创建 IAM 用户,默认情况下,该用户没有将共享存储库与 CodeCommit 存储库同步的权限。您可以运行 git pull 来验证这一点。如果新用户没有同步权限,则该命令不起作用。然后,回到 IAM 控制台,应用允许该用户使用的策略。git pull. 随后,您可以再次运行 git pull 进行验证。
在此步骤中假定您具有在 Amazon Web Services 账户中创建 IAM 用户的权限。如果您不具备这些权限,则无法执行此步骤中的过程。请跳到第 9 步:清除并清理学习教程时所使用的资源。
-
登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 请务必用您在设置 中使用的用户名和密码登录。
-
在导航窗格中选择用户,然后选择创建新用户。
-
在第一个输入用户名称框中,输入示例用户名(例如,
JaneDoe-CodeCommit
)。选中为每个用户生成访问密钥框,然后选择创建。 -
选择显示用户安全凭证。记下访问密钥 ID 和秘密访问密钥,或选择 Download Credentials。
-
按照中的说明进行操作对于使用 Git 凭据的 HTTPS 用户生成并提供 IAM 用户凭证。
如果需要使用 SSH,请按照SSH 和 Linux、macOS 或 Unix:为 Git 和 CodeCommit 设置公钥和私钥或步骤 3: 为 Git 和 CodeCommit 设置公钥和私钥中的说明操作,设置用户及公钥和私钥。
-
运行 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 存储库同步的权限。
-
返回 IAM 控制台。在导航窗格中选择 Policies,然后选择 Create Policy。(如果 Get Started 按钮出现,选择此按钮,然后选择 Create Policy。)
-
在 Create Your Own Policy 旁,选择 Select。
-
在策略名称框中,输入名称(例如
CodeCommitAccess-GettingStarted
)。 -
在策略文档框中,输入以下内容,它允许 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 的身份验证和访问控制.
-
在导航窗格中,选择 Users (用户)。
-
选择要附加策略的示例用户名(例如,
JaneDoe-CodeCommit
)。 -
请选择 Permissions 选项卡。
-
在 Managed Policies 中,选择 Attach Policy。
-
选择您刚刚创建的
CodeCommitAccess-GettingStarted
策略,然后选择 Attach Policy (附加策略)。 -
运行 git pull。这一次,命令应能起作用,并显示
Already up-to-date
消息。 -
如果您使用 HTTPS,请切换到您的原始 Git 凭证;或者,如果使用 git-remote-codecommit,请切换到您的常用配置文件。有关更多信息,请参阅使用 Git 凭据为 HTTPS 用户设置或使用 HTTPS 连接AWS CodeCommit的设置步骤 git-remote-codecommit中的说明。
如果使用的是 SSH,请切换到您的原始密钥。有关更多信息,请参阅 SSH 和 Linux、macOS 或 Unix:为 Git 和 CodeCommit 设置公钥和私钥 或 步骤 3: 为 Git 和 CodeCommit 设置公钥和私钥。
本教程到此结束。
第 9 步:清除
在此步骤中,将删除您在本教程中使用的 CodeCommit 存储库,以免产生存储空间使用费。
另外还需要删除您本地计算机上的本地存储库和共享存储库,删除 CodeCommit 存储库后就不需要它们了。
删除该存储库后,您无法将其克隆到任何本地存储库或共享存储库。也无法再从任何本地存储库或共享存储库向其推送数据或从其提取数据。此操作无法撤消。
删除 CodeCommit 存储库(控制台)
从打开 CodeCommit 控制台https://console.aws.amazon.com/codesuite/codecommit/home
. -
在存储库的控制面板在页面上的存储库列表中,选择MyDemoRepo.
-
在导航窗格中,选择 Settings (设置)。
-
在 Settings 页面上的 Delete repository 中,选择 Delete repository。
-
在 Type the name of the repository to confirm deletion (键入存储库名称以确认删除) 旁边的框中,输入
MyDemoRepo
,然后选择 Delete (删除)。
删除 CodeCommit 存储库(AWS CLI)
运行删除存储库命令:
aws codecommit delete-repository --repository-name MyDemoRepo
删除本地存储库和共享存储库
对于 Linux、macOS 或 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