

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# でコミットを作成する AWS CodeCommit
<a name="how-to-create-commit"></a>

新しいリポジトリの最初のコミットを作成するときは、 AWS CLI および **put-file** コマンドを使用します。これにより、最初のコミットが作成され、新しいリポジトリのデフォルトのブランチを作成および指定することが可能になります。Git または を使用して、CodeCommit リポジトリにコミット AWS CLI を作成できます。ローカルリポジトリが CodeCommit リポジトリに接続されている場合は、Git を使用して、ローカルリポジトリから CodeCommit リポジトリにコミットをプッシュします。CodeCommit コンソールで直接コミットを作成するには、「[AWS CodeCommit リポジトリにファイルを作成または追加する](how-to-create-file.md)」および「[AWS CodeCommit リポジトリ内のファイルの内容を編集する](how-to-edit-file.md)」を参照してください。

**注記**  
ベストプラクティスとして、サポートされている最新バージョンの AWS CLI、Git、およびその他のソフトウェアを使用することをお勧めします。を使用する場合は AWS CLI、 `create-commit` コマンドを含むバージョンを使用していることを確認するために、最新バージョンがインストールされていることを確認してください。

**Topics**
+ [を使用してリポジトリの最初のコミットを作成する AWS CLI](#how-to-create-first-commit)
+ [Git クライアントを使用してコミットを作成する](#how-to-create-commit-git)
+ [を使用してコミットを作成する AWS CLI](#how-to-create-commit-cli)

## を使用してリポジトリの最初のコミットを作成する AWS CLI
<a name="how-to-create-first-commit"></a>

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

**注記**  
CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。<a name="create-first-commit"></a>

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


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

1. ターミナルまたはコマンドラインで、**put-file** コマンドを実行し、次を指定します。
   + 最初のファイルを追加するリポジトリの名前。
   + デフォルトのブランチとして作成するブランチの名前。
   + ファイルのローカルの場所。この場所に使用される構文は、ローカルのオペレーティングシステムによって異なります。
   + 追加するファイルの名前 (リポジトリ内の更新ファイルの保存先を示すパスを含む)。
   + このファイルに関連付けるユーザー名および E メールアドレス。
   + このファイルの追加理由を説明するコミットメッセージ。

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

   例えば、base 6 エンコードファイルのコンテンツ例を含む *README.md* というファイルを *MyDemoRepo* というリポジトリ (*development* ブランチ) に追加するには、次のようにします。

   ```
   aws codecommit put-file --repository-name MyDemoRepo --branch-name development --file-path README.md --file-content "EXAMPLE0123456789example0123456789EXAMPLE1" --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 クライアントを使用してコミットを作成する
<a name="how-to-create-commit-git"></a>

ローカルコンピュータにインストールされた Git クライアントを使用してコミットを作成してから、それらのコミットを CodeCommit リポジトリにプッシュできます。

1. 前提条件 (例: [セットアップ ](setting-up.md)) を完了します。
**重要**  
設定が完了していない場合は、Git を使用してリポジトリに対して接続やコミットを行うことはできません。

1. 正しいブランチでコミットを作成していることを確認します。使用可能なブランチのリストを表示し、現在使用するように設定されているブランチを見つけるには、**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
   ```

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

   例えば、ローカルリポジトリで、以下のテキストを含む `bird.txt` という名前のファイルを作成します。

   ```
   bird.txt
   --------
   Birds (class Aves or clade Avialae) are feathered, winged, two-legged, warm-blooded, egg-laying vertebrates.
   ```

1. **git status** を実行します。これにより、保留中のコミットに `bird.txt` がまだ含まれていないことが示されます。

   ```
   ...        
   Untracked files:
     (use "git add <file>..." to include in what will be committed)
           
           bird.txt
   ```

1. **git add bird.txt** を実行して、保留中のコミットに新しいファイルを含めます。

1. **git status** をもう一度実行すると、以下のような出力が表示されます。`bird.txt` が保留中のコミットに含まれるか、コミットのためにステージングされたことがわかります。

   ```
   ...
   Changes to be committed:
     (use "git reset HEAD <file>..." to unstage)
       
           new file:   bird.txt
   ```

1. コミットを確定するには、**git commit** オプションを指定して `-m` を実行します (例: ** git commit -m "*Adding bird.txt to the repository.*"**)。`-m` オプションを指定すると、コミットメッセージが作成されます。

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

   ```
   ...    
   nothing to commit, working directory clean
   ```

1. ローカルリポジトリから確定したコミットを CodeCommit リポジトリにプッシュする前に、**git diff --stat *remote-name*/*branch-name*** を実行することで、プッシュしている内容を表示できます。ここで、*remote-name* はローカルリポジトリが CodeCommit リポジトリに使用するニックネームであり、*branch-name* は比較するブランチの名前です。
**ヒント**  
ニックネームを取得するには、**git remote** を実行します。ブランチ名のリストを取得するには、**git branch** を実行します。現在のブランチの横にはアスタリスク (`*`) が表示されます。**git status** を実行して、ブランチ名を取得することもできます。
**注記**  
リポジトリのクローンを作成した場合、ローカルリポジトリから見ると、*remote-name* は CodeCommit リポジトリの名前ではありません。リポジトリを複製すると、*remote-name* は自動的に `origin` に設定されます。

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

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

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

1. コミットをローカルリポジトリから CodeCommit リポジトリにプッシュする準備ができたら、**git push *remote-name* *branch-name*** を実行します。ここで、*remote-name* は、ローカルリポジトリが CodeCommit リポジトリに使用するニックネームであり、*branch -name* は、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
   ```
**ヒント**  
`-u` オプションを **git push** に追加した場合 (例: **git push -u origin main**)、アップストリーム追跡情報が設定されているため、これ以降は **git push** を実行するだけで済みます。アップストリーム追跡情報を取得するには、**git remote show *remote-name*** (例: **git remote show origin**) を実行します。

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

## を使用してコミットを作成する AWS CLI
<a name="how-to-create-commit-cli"></a>

 AWS CLI と `create-commit` コマンドを使用して、指定されたブランチの先端にリポジトリのコミットを作成できます。非参照のマージコミットを作成して、2 つのコミット識別子のマージ結果を表すこともできます。詳細については、「[非参照コミットを作成する](how-to-resolve-conflict-pull-request.md#create-unreferenced-merge-commit)」を参照してください。

**注記**  
CodeCommit で AWS CLI コマンドを使用するには、 をインストールします AWS CLI。詳細については、「[コマンドラインリファレンス](cmd-ref.md)」を参照してください。<a name="create-commit"></a>

**コミットを作成するには**

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

1. ターミナルまたはコマンドラインで、**create-commit** コマンドを実行し、次を指定します。
   + 変更を加えるリポジトリ。
   + 変更を加えるブランチ。
   + ブランチに作成された最新のコミットの完全なコミット ID (ヒント、ヘッドコミット、または親コミット ID とも呼ばれます)。
   + 行った変更によってそれらのフォルダの内容が削除された場合に、空のフォルダを保持するかどうか。デフォルトでは、この値は false に設定されます。
   + 追加、変更、または削除するファイルに関する情報。
   + これらの変更に関連付けるユーザー名および E メール。
   + これらの変更を加えた理由についての説明をするコミットメッセージ。

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

   例えば、*main* ブランチの *MyDemoRepo* というリポジトリに `README.md` ファイルを追加するコミットをリポジトリに作成するには、次のようにします。ファイルの内容は Base64 にあり、「チームリポジトリへようこそ\$1」とあります。

   ```
   aws codecommit create-commit --repository-name MyDemoRepo --branch-name main --parent-commit-id 4c925148EXAMPLE --put-files "filePath=README.md,fileContent=V2VsY29tZSB0byBvdXIgdGVhbSByZXBvc2l0b3J5IQo="
   ```
**ヒント**  
親コミット ID を取得するには、[get-par](how-to-view-branch-details.md#how-to-view-branch-details-cli-details) コマンドを実行します。

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

   ```
   {
       "commitId": "4df8b524-EXAMPLE",
       "treeId": "55b57003-EXAMPLE",
       "filesAdded": [
           {
               "blobId": "5e1c309dEXAMPLE",
               "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 --author-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 ユーザー向けに最適化されています。コマンドラインあるいは 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"
           }
       ]
   }
   ```