在 Amazon CodeCommit 中创建提交 - Amazon CodeCommit
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon CodeCommit 中创建提交

在为新存储库创建第一个提交时,请使用 Amazon CLI 和 put-file 命令。这将创建第一个提交,并让您可以为新存储库创建和指定默认分支。您可以使用 Git 或Amazon CLI在 CodeCommit 仓库中创建提交。如果本地存储库已连接到 CodeCommit 存储库,则可以使用 Git 将提交从本地存储库推送到存储库。 CodeCommit 要直接在 CodeCommit 控制台中创建提交,请参阅在 Amazon CodeCommit 存储库中创建或添加文件编辑 Amazon CodeCommit 存储库中文件的内容

注意

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

使用 Amazon CLI 创建存储库的第一个提交

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

注意

要将Amazon CLI命令与一起使用 CodeCommit,请安装Amazon CLI。有关更多信息,请参阅命令行参考

使用 Amazon CLI 为存储库创建第一个提交

  1. 在本地计算机上,创建要作为第一个文件添加到 CodeCommit存储库的文件。一个常见做法是创建一个 README.md markdown 文件,向其他存储库用户说明此存储库的用途。如果您包含一个README.md文件,则该文件的内容将自动显示在 CodeCommit控制台中存储库的 “代码” 页面的底部。

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

    • 要将第一个文件添加到的存储库的名称。

    • 要创建为默认分支的分支的名称。

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

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

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

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

    用户名、电子邮件地址和提交消息是可选的,但可帮助其他用户了解执行更改的人员以及原因。如果您不提供用户名,则 CodeCommit 默认使用您的 IAM 用户名或控制台登录名的派生形式作为作者姓名。

    例如,要将名为 README.md、内容为“Welcome to our team repository!”的文件添加到 到名为 develop MyDemoRepoment 的分支命名的存储库:

    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 客户端配置为使用您要用于该分支的名称创建初始分支。例如,如果您希望默认分支的名称为 development

    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,其中 rem ote-name 是本地 CodeCommit 存储库使用的昵称,b ranch-name 是要比较的分支的名称。

    提示

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

    注意

    如果您克隆了存储库,则从本地存储库的角度来看,re mote-name 不是存储库的名称。 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,其中 rem ote-name 是本地存储库使用的昵称,b ranch-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 文档。

使用 Amazon CLI 创建提交

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

注意

要将Amazon CLI命令与一起使用 CodeCommit,请安装Amazon CLI。有关更多信息,请参阅命令行参考

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

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

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

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

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

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

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

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

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

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

    例如,为存储库创建提交,将README.md文件添加到分支MyDemoRepo中名为的存储库中。该文件采用 Base64 格式,内容为“Welcome to our team repository!”:

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

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

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

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

    要创建对名为 file1.pyfile2.txt 的文件进行更改的提交,请将文件从 picture.png 重命名为 image1.png,然后将其从名为 p ic tures 的目录移动到名为 im ag es 的目录,然后在名为.py 的存储库中删除名为 ExampleSolution.py 的文件,MyFeatureBranch该分支名为MyDemoRepo该分支的最近一次提交 ID 为 4c925148Example:

    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" } ] }