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

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

在中创建提交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 的文件,其内容为 “欢迎来到我们的团队存储库!” 到一个名为 develo MyDemoRepopment 的分支的存储库:

    aws codecommit put-file --repository-name MyDemoRepo --branch-name development --file-path README.md --file-content "Welcome to our team repository!" --author-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 客户端,使用你想用于该分支的名称创建一个初始分支。例如,如果你想让你的默认分支命名为 developm ent

    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-nam e 是本地 CodeCommit 存储库使用的昵称,branch-nam e 是要比较的分支的名称。

    提示

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

    注意

    如果您克隆了存储库,则从本地存储库的角度来看,re mote-nam e 不是 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-nam e 是本地 CodeCommit 存储库使用的昵称,branch-nam e 是要推送到 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 中,内容为 “欢迎来到我们的团队存储库!” :

    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 ages 的目录,然后删除名为的文件ExampleSolution.py 位于一个名为的分支MyDemoRepo上命MyFeatureBranch名的存储库中,该分支最近提交的 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" } ] }