在 中创建提交AWS CodeCommit - AWS CodeCommit

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

在 中创建提交AWS CodeCommit

当您为新仓库创建第一次提交时,您可以使用AWS CLI和put-file命令。这将创建第一次提交,它允许您为新仓库创建和指定默认分支。您可以使用 Git 或AWS CLI在 CodeCommit 存储库中创建提交。如果本地仓库连接到 CodeCommit 存储库,则可以使用 Git 将提交从本地仓库推送到 CodeCommit 存储库。要直接在 CodeCommit 控制台中创建提交,请参阅创建文件,或者向AWS CodeCommitrepository在编辑文件的内容AWS CodeCommitrepository.

注意

作为最佳实践,我们建议您使用最新受支持的版本。AWS CLI、Git 和其他软件。如果您将AWS CLI在中,请务必安装最新版本以确保您使用的是包含create-commit命令。

使用创建仓库的第一次提交AWS CLI

您可以使用AWS CLI和put-file命令为存储库创建您的第一个提交。使用put-file创建第一个提交,将文件添加到空存储库,然后创建一个具有您指定名称的分支。它将新的分支指定为存储库的默认分支。

注意

使用AWS CLI使用 CodeCommit 的命令,请安装AWS CLI. 有关更多信息,请参阅命令行参考

使用创建仓库的第一次提交AWS CLI

  1. 在本地计算机上,创建要添加的文件,作为第一个文件到 CodeCommit 存储库。一种常见做法是创建README.md向其他仓库用户解释此存储库的用途的 Markdown 文件。如果你包括README.md文件,文件的内容将自动显示在代码CodeCommit 控制台中存储库的页面。

  2. 在终端或命令行中,运行 put-file 命令,并指定:

    • 您希望在其中添加第一个文件的存储库的名称。

    • 您希望创建为默认分支的分支的名称。

    • 文件的本地位置。用于此位置的语法取决于您的本地操作系统。

    • 您要添加的文件的名称,包括更新的文件在存储库中的存储路径。

    • 您希望与此文件关联的用户名和电子邮件。

    • 一条提交消息,说明您为什么添加此文件。

    用户名、电子邮件地址和提交消息是可选的,但可帮助其他用户知道谁执行的更改以及原因。如果您未提供用户名,CodeCommit 默认使用您的 IAM 用户名称作为作者姓名,或者从您的控制台登录名派生。

    例如,要添加名为的文件Readme.md内容为 “欢迎来到我们的团队存储库!” 到名为的仓库MyDemoRepo到名为的分支开发

    aws codecommit put-file --repository-name MyDemoRepo --branch-name development --file-path README.md --file-content "Welcome to our team repository!" --name "Mary Major" --email "mary_major@example.com" --commit-message "I added a quick readme for our new team repository."

    如果成功,该命令返回类似以下内容的输出:

    { "commitId": "724caa36EXAMPLE", "blobId": "a8a94062EXAMPLE", "treeId": "08b2fc73EXAMPLE" }

使用 Git 客户端创建提交

您可以使用本地计算机上安装的 Git 客户端创建提交,然后将这些提交推送到您的 CodeCommit 存储库中。

  1. 完成前提条件,包括设置

    重要

    如果您尚未完成设置,则无法使用 Git 连接或提交到存储库。

  2. 确保将在正确的分支中创建提交。要查看可用分支的列表并确认您当前设置使用的分支,请运行 git branch。这会显示所有分支。当前分支旁边会显示星号 (*)。要切换到其他分支,请运行 git checkout branch-name。如果这是你的第一次提交,请运行git config 命令来配置 Git 客户端以创建一个初始分支,其名称为您想用于该分支。例如,如果你希望默认分支有名称开发

    git config --local init.defaultBranch development
    提示

    只有 Git v.2.28 及更高版本才有此命令。

    你也可以运行此命令将默认分支名称设置为development对于所有新创建的存储库:

    git config --global init.defaultBranch development
  3. 对分支做出更改 (例如,添加、修改或删除文件)。

    例如,在本地存储库中,创建一个名为的文件bird.txt使用以下文本:

    bird.txt -------- Birds (class Aves or clade Avialae) are feathered, winged, two-legged, warm-blooded, egg-laying vertebrates.
  4. 运行 git status,这应会指示 bird.txt 尚未包含在任何待处理提交中:

    ... Untracked files: (use "git add <file>..." to include in what will be committed) bird.txt
  5. 运行 git add bird.txt 将新文件包含在待处理提交中。

  6. 如果您再次运行 git status,应显示与以下内容类似的输出。它指示 bird.txt 现已加入到待处理提交中,或已暂存并等待提交:

    ... Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: bird.txt
  7. 要完成提交,请运行 git commit 并指定 -m 选项(例如, git commit -m "Adding bird.txt to the repository.")。-m 选项用于创建提交消息。

  8. 如果您再次运行 git status,应显示与以下内容类似的输出。它指示提交已做好从本地存储库推送到 CodeCommit 存储库的准备:

    ... nothing to commit, working directory clean
  9. 在将最终提交从本地存储库推送到 CodeCommit 存储库之前,可以通过执行以下操作查看将推送的内容:git diff --stat remote-name/branch-name,其中,远程名称是本地仓库用于 CodeCommit 存储库的昵称,分支名称是要比较的分支名称。

    提示

    要获取别名,请运行 git remote。要获取分支名称列表,请运行 git branch。当前分支旁边会显示星号 (*)。您也可以运行 git status 来获取当前分支的名称。

    注意

    如果您克隆了存储库,从本地存储库的角度看,远程名称不是 CodeCommit 存储库的名称。在克隆存储库时,remote-name 会自动设为 origin

    例如,git diff --stat origin/main 将显示类似以下内容的输出:

    bird.txt | 1 + 1 file changed, 1 insertion(+)

    该输出假定您已将本地存储库连接到 CodeCommit 存储库。(有关说明,请参阅连接存储库。)

  10. 当你准备好将提交从本地仓库推送到 CodeCommit 存储库时,请运行git push remote-name branch-name,其中,远程名称是本地仓库用于 CodeCommit 存储库的昵称,分支名称是要推送到 CodeCommit 存储库的分支的名称。

    例如,运行 git push origin main 将显示类似以下内容的输出:

    对于 HTTPS:

    Counting objects: 7, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 516 bytes | 0 bytes/s, done. Total 5 (delta 2), reused 0 (delta 0) remote: To https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo b9e7aa6..3dbf4dd main -> main

    对于 SSH:

    Counting objects: 7, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 516 bytes | 0 bytes/s, done. Total 5 (delta 2), reused 0 (delta 0) remote: To ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo b9e7aa6..3dbf4dd main -> main
    提示

    如果向 git push 添加 -u 选项(例如,git push -u origin main),则以后只需运行 git push,因为已设置了上游跟踪信息。要获取上游跟踪信息,请运行 git remote show remote-name(例如,git remote show origin)。

有关更多选项,请参阅 Git 文档。

使用AWS CLI

您可以使用 AWS CLI 和 create-commit 命令来为指定分支顶端的存储库创建提交。您还可以创建未引用的合并提交来表示合并两个提交说明符的结果。有关更多信息,请参阅创建非引用提交

注意

使用AWS CLI使用 CodeCommit 的命令,请安装AWS CLI. 有关更多信息,请参阅命令行参考

创建提交

  1. 在本地计算机上,进行要提交到 CodeCommit 存储库的更改。

  2. 在终端或命令行中,运行 create-commit 命令,并指定:

    • 要将更改提交到的存储库。

    • 要将更改提交到的分支。

    • 对该分支进行的最新提交的完整提交 ID,也称为顶端或头提交或父提交 ID。

    • 如果所做的更改删除了这些文件夹的内容,是否保留任何空文件夹。默认情况下,此值为 false。

    • 有关要添加、更改或删除的文件的信息。

    • 希望与这些更改关联的用户名和电子邮件。

    • 一条提交消息,说明您进行这些更改的原因。

    用户名、电子邮件地址和提交消息是可选的,但可帮助其他用户知道更改的执行者及原因。如果您未提供用户名,CodeCommit 默认使用您的 IAM 用户名称作为作者姓名,或者从您的控制台登录名派生。

    例如,要为存储库创建一个提交,该提交添加README.md文件到名为的存储库MyDemoRepo中的主色分支:

    aws codecommit create-commit --repository-name MyDemoRepo --branch-name main --parent-commit-id 4c925148EXAMPLE --put-files "filePath=README.md,fileContent='Welcome to our team repository.'"
    提示

    要获取父提交 ID,请运行get-分支命令。

    如果成功,该命令返回类似以下内容的输出:

    { "commitId": "4df8b524-EXAMPLE", "treeId": "55b57003-EXAMPLE", "filesAdded": [ { "blobId": "5e1c309dEXAMPLE", "absolutePath": "meeting.md", "fileMode": "NORMAL" } ], "filesDeleted": [], "filesUpdated": [] }

    创建对名为的文件进行更改的提交file1.pyfile2.txt,重命名来源的文件picture.pngimage1.png然后将其从名为的目录中移动图片转到名为的目录,映像,然后删除名为ExampleSolution.py在名为的存储库中MyDemoRepo在名为的分支上我的功能分支他们最近提交的 ID 为4c925148 示例

    aws codecommit create-commit --repository-name MyDemoRepo --branch-name MyFeatureBranch --parent-commit-id 4c925148EXAMPLE --name "Saanvi Sarkar" --email "saanvi_sarkar@example.com" --commit-message "I'm creating this commit to update a variable name in a number of files." --keep-empty-folders false --put-files '{"filePath": "file1.py", "fileMode": "EXECUTABLE", "fileContent": "bucket_name = sys.argv[1] region = sys.argv[2]"}' '{"filePath": "file2.txt", "fileMode": "NORMAL", "fileContent": "//Adding a comment to explain the variable changes in file1.py"}' '{"filePath": "images/image1.png", "fileMode": "NORMAL", "sourceFile": {"filePath": "pictures/picture.png", "isMove": true}}' --delete-files filePath="ExampleSolution.py"
    注意

    的语法--put-files根据您的操作系统,细分会有所不同 以上示例针对 Linux、macOS 或 Unix 用户和具有 Bash 仿真器的 Windows 用户进行了优化。使用命令行或 Powershell 的 Windows 用户应使用适合这些系统的语法。

    如果成功,该命令返回类似以下内容的输出:

    { "commitId": "317f8570EXAMPLE", "treeId": "347a3408EXAMPLE", "filesAdded": [ { "absolutePath": "images/image1.png", "blobId": "d68ba6ccEXAMPLE", "fileMode": "NORMAL" } ], "filesUpdated": [ { "absolutePath": "file1.py", "blobId": "0a4d55a8EXAMPLE", "fileMode": "EXECUTABLE" }, { "absolutePath": "file2.txt", "blobId": "915766bbEXAMPLE", "fileMode": "NORMAL" } ], "filesDeleted": [ { "absolutePath": "ExampleSolution.py", "blobId": "4f9cebe6aEXAMPLE", "fileMode": "EXECUTABLE" }, { "absolutePath": "pictures/picture.png", "blobId": "fb12a539EXAMPLE", "fileMode": "NORMAL" } ] }