AWS CodeCommit でコミットを作成する - AWS CodeCommit

AWS CodeCommit でコミットを作成する

Git または AWS CLI を使用して CodeCommit リポジトリにコミットを作成できます。ローカル repo が CodeCommit リポジトリ に接続されている場合は、Git を使用して ローカル repo から CodeCommit リポジトリ にコミットをプッシュします。CodeCommit コンソールで直接コミットを作成するには、「AWS CodeCommit リポジトリにファイルを作成または追加する」および「AWS CodeCommit リポジトリでファイルの内容を編集する」を参照してください。

注記

AWS CLI を使用する場合は、最新バージョンを必ずインストールし、使用するバージョンに create-commit コマンドが含まれていることを確認してください。

AWS CLI を使用してリポジトリの最初のコミットを作成する

AWS CLI と put-file コマンドを使用して、リポジトリの最初のコミットを作成できます。put-file を使用すると、空のリポジトリにファイルを追加する最初のコミットが作成され、指定した名前のブランチが作成されます。この新しいブランチは、リポジトリのデフォルトブランチとして指定されます。

注記

AWS CLI コマンドを CodeCommit で使用するには、AWS CLI をインストールします。詳細については、「コマンドラインリファレンス」を参照してください。

AWS CLI を使用してリポジトリの最初のコミットを作成するには

  1. ローカルコンピュータで、CodeCommit リポジトリへの最初のファイルとして追加するファイルを作成します。一般的なプラクティスとして、このリポジトリの用途を他のリポジトリユーザーに説明する README.md マークダウンファイルを作成します。README.md ファイルを含めると、このファイルの内容が CodeCommit コンソールでリポジトリの [コード] ページの下部に自動的に表示されます。

  2. ターミナルまたはコマンドラインで、put-file コマンドを実行し、次を指定します。

    • 最初のファイルを追加するリポジトリの名前。

    • デフォルトのブランチとして作成するブランチの名前。

    • ファイルのローカルの場所。この場所に使用される構文は、ローカルのオペレーティングシステムによって異なります。

    • 追加するファイルの名前 (リポジトリ内の更新ファイルの保存先を示すパスを含む)。

    • このファイルに関連付けるユーザー名および E メールアドレス。

    • このファイルの追加理由を説明するコミットメッセージ。

    ユーザー名、E メールアドレス、コミットメッセージは、オプションですが、他のユーザーに変更者や変更の理由を示すために役立ちます。ユーザー名を指定しない場合、CodeCommit はデフォルトで IAM ユーザー名またはコンソールログインの派生を作成者名として使用します。

    例えば、「チームリポジトリへようこそ!」という内容の Readme.md というファイルを MyDemoRepo というリポジトリ (development ブランチ) に追加するには、次のようにします。

    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 を実行します。

  3. ブランチに変更を加える (ファイルの追加、変更、削除など)。

    たとえば、ローカル repo で、以下のテキストを含む 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. コミットを確定するには、-m オプションを指定して git commit を実行します (例: git commit -m "Adding bird.txt to the repository.")。-m オプションを指定すると、コミットメッセージが作成されます。

  8. git status をもう一度実行すると、以下のような出力が表示されます。コミットが ローカル repo から CodeCommit リポジトリ にプッシュされる準備ができていることがわかります。

    ... nothing to commit, working directory clean
  9. ローカル repo から確定したコミットを CodeCommit リポジトリ にプッシュする前に、git diff --stat remote-name/branch-name を実行することで、プッシュしている内容を表示できます。ここで、remote-name は ローカル repo が CodeCommit リポジトリ に使用するニックネームであり、branch-name は比較するブランチの名前です。

    ヒント

    ニックネームを取得するには、git remote を実行します。ブランチ名のリストを取得するには、git branch を実行します。現在のブランチの横にはアスタリスク (*) が表示されます。git status を実行して、ブランチ名を取得することもできます。

    注記

    リポジトリのクローンを作成した場合、ローカル repo から見ると、remote-name は CodeCommit リポジトリ の名前ではありません。リポジトリを複製すると、remote-name は自動的に origin に設定されます。

    たとえば、git diff --stat origin/master では、以下のような出力が表示されます。

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

    この出力では、ローカル repo を CodeCommit リポジトリ に接続済みであることを前提としています。(手順については、「リポジトリへの接続」を参照してください。)

  10. ローカル repo から確定したコミットを CodeCommit リポジトリ にプッシュする前に、git push remote-name branch-name を実行することで、プッシュされる内容を表示できます。ここで、remote-name は ローカル repo が CodeCommit リポジトリ に使用するニックネームであり、branch-name は、CodeCommit リポジトリ にプッシュするブランチの名前です。

    たとえば、 git push origin master を実行すると以下のような出力が表示されます。

    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 master -> master

    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 master -> master
    ヒント

    -u オプションを git push に追加した場合 (例: git push -u origin master)、アップストリーム追跡情報が設定されているため、これ以降は git push を実行するだけで済みます。アップストリーム追跡情報を取得するには、git remote show remote-name (例: git remote show origin) を実行します。

他のオプションについては、Git のドキュメントを参照してください。

AWS CLI を使用してコミットを作成する

AWS CLI と create-commit コマンドを使用して、指定したブランチの先端にあるリポジトリのコミットを作成できます。非参照のマージコミットを作成して、2 つのコミット識別子のマージ結果を表すこともできます。詳細については、「非参照コミットを作成する」を参照してください。

注記

AWS CLI コマンドを CodeCommit で使用するには、AWS CLI をインストールします。詳細については、「コマンドラインリファレンス」を参照してください。

コミットを作成するには

  1. ローカルコンピュータで、必要な変更を CodeCommit リポジトリに加えます。

  2. ターミナルまたはコマンドラインで、create-commit コマンドを実行し、次を指定します。

    • 変更を加えるリポジトリ。

    • 変更を加えるブランチ。

    • ブランチに作成された最新のコミットの完全なコミット ID (ヒント、ヘッドコミット、または親コミット ID とも呼ばれます)。

    • 行った変更によってそれらのフォルダの内容が削除された場合に、空のフォルダを保持するかどうか。デフォルトでは、この値は false に設定されます。

    • 追加、変更、または削除するファイルに関する情報。

    • これらの変更に関連付けるユーザー名および E メール。

    • これらの変更を加えた理由についての説明をするコミットメッセージ。

    ユーザー名、E メールアドレス、コミットメッセージはオプションですが、他のユーザーに変更者と変更の理由について理解してもらうために便利です。ユーザー名を指定しない場合、CodeCommit はデフォルトで IAM ユーザー名またはコンソールログインの派生を作成者名として使用します。

    例えば、master ブランチの MyDemoRepo というリポジトリに meeting.md ファイルを追加するコミットをリポジトリに作成するには、次のようにします。

    aws codecommit create-commit --repository-name MyDemoRepo --branch-name master --parent-commit-id a4d4d5da-EXAMPLE --put-files "filePath=meeting.md,fileContent='We will use this file for meeting notes.'"

    成功すると、このコマンドは以下のような出力を返します。

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

    file1.py および file2.py という名前のファイルに変更を加えるコミットを作成するには、ファイルの名前を picture.png から image1.png に変更し、pictures という名前のディレクトリから images という名前のディレクトリに移動します。そして、最新コミットの ID が 4c925148EXAMPLE である MyFeatureBranch という名前のブランチの MyDemoRepo という名前のリポジトリ内の ExampleSolution.py という名前のファイルを削除します。

    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 セグメントの構文は、オペレーティングシステムによって少し異なります。上記の例は、Bash エミュレーターを持つ Linux, macOS, or Unix ユーザーと Windows ユーザー向けに最適化されています。コマンドラインあるいは Powersell の 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" } ] }